PHP信號(hào)處理機(jī)制的操作代碼講解
我們首先來看下實(shí)例代碼:
function sig_handler($sig) { print("handled sig: $sig\n"); } pcntl_signal(SIGIO, "sig_handler"); posix_kill(posix_getpid(),SIGIO); while(true) { posix_kill(posix_getpid(),SIGIO); pcntl_signal_dispatch(); sleep(1); }
最好自己手動(dòng)循環(huán)處理信號(hào)隊(duì)列,而不是使用php提供的的declare(ticks=1),tick_handler()這種信號(hào)處理機(jī)制,因?yàn)閠ick機(jī)制的性能問題,每執(zhí)行一條語句都回調(diào)tick_handler查看是否有信號(hào),而很大部分時(shí)間是沒有信號(hào)的。
posix_signal設(shè)置信號(hào)的回調(diào)處理,
posix_kill僅僅是把信號(hào)放入進(jìn)程的信號(hào)待處理隊(duì)列中,所有并不會(huì)觸發(fā)信號(hào)回調(diào),由pcntl_signal_dispatch處理信號(hào)隊(duì)列中的信號(hào)
posix_getpwnam("nginx"):獲取用戶名的uid,gid等信息
pcntl_signal(SIGPIPE, SIG_IGN, false):忽略內(nèi)核發(fā)來的SIGPIPE信號(hào),當(dāng)連接已closed,進(jìn)程繼續(xù)發(fā)數(shù)據(jù)到無效socket,系統(tǒng)會(huì)收到含RST 控制位TCP包,系統(tǒng)會(huì)發(fā)出一個(gè)SIGPIPE信號(hào)給進(jìn)程,告訴進(jìn)程這個(gè)連接已經(jīng)斷開了,不要再寫了。該信號(hào)的默認(rèn)處理是終止進(jìn)程,進(jìn)程可以捕獲它并忽略該信號(hào)以免不情愿的被終止。
socket上下文選項(xiàng):
backlog:用于限制流監(jiān)聽隊(duì)列中未完成連接的連接數(shù)量
so_reuseport:重用端口(由內(nèi)核調(diào)度連接到多個(gè)監(jiān)聽同一個(gè)端口的進(jìn)程,由于是通過hash方式來標(biāo)志連接對(duì)應(yīng)的進(jìn)程,所以監(jiān)聽進(jìn)程數(shù)是不能改變的,)
定時(shí)器信號(hào)處理
pcntl_signal(SIGALRM,"sig_handler"); pcntl_alarm(2); function sig_handler($sig) { echo "one second after"; } while (1) { pcntl_signal_dispatch(); sleep(1); }
相關(guān)文章
XAMPP升級(jí)PHP版本實(shí)現(xiàn)步驟解析
這篇文章主要介紹了XAMPP升級(jí)PHP版本實(shí)現(xiàn)步驟解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09php 獲取當(dāng)前訪問的url文件名的方法小結(jié)
php下獲取當(dāng)前訪問的文件名的代碼小結(jié),大家可以根據(jù)需要選擇。2010-02-02php調(diào)用KyotoTycoon簡(jiǎn)單實(shí)例
這篇文章主要介紹了php調(diào)用KyotoTycoon簡(jiǎn)單實(shí)例,涉及php調(diào)用KyotoTycoon的簡(jiǎn)單使用方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-04-04解析mysql中UNIX_TIMESTAMP()函數(shù)與php中time()函數(shù)的區(qū)別
本篇文章是對(duì)mysql中UNIX_TIMESTAMP()函數(shù)與php中time()函數(shù)的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06攻克CakePHP系列一 連接MySQL數(shù)據(jù)庫
請(qǐng)先參閱以前寫的文章以便對(duì)CakePHP有所了解文章,上一篇2008-10-10幾行代碼輕松實(shí)現(xiàn)PHP文件打包下載zip
這篇文章主要為大家詳細(xì)介紹了使用PHP自帶zlib函數(shù) ,輕松實(shí)現(xiàn)PHP文件打包下載zip,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03php使用json_decode后數(shù)字對(duì)象轉(zhuǎn)換成了科學(xué)計(jì)數(shù)法的解決方法
這篇文章主要介紹了php使用json_decode后數(shù)字對(duì)象轉(zhuǎn)換成了科學(xué)計(jì)數(shù)法的解決方法,涉及php操作json格式數(shù)據(jù)與數(shù)值轉(zhuǎn)換相關(guān)技巧,需要的朋友可以參考下2017-02-02如何通過PHP實(shí)現(xiàn)Des加密算法代碼實(shí)例
這篇文章主要介紹了如何通過PHP實(shí)現(xiàn)Des加密算法代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05php中處理mysql_fetch_assoc返回來的數(shù)組 不用foreach----echo
php中處理mysql_fetch_assoc返回來的數(shù)組 不用foreach----echo的方法,需要的朋友可以參考下。2011-05-05