国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP信號處理機制的操作代碼講解

2024-05-05 00:08:34
字體:
來源:轉載
供稿:網友

我們首先來看下實例代碼:

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);}

最好自己手動循環處理信號隊列,而不是使用php提供的的declare(ticks=1),tick_handler()這種信號處理機制,因為tick機制的性能問題,每執行一條語句都回調tick_handler查看是否有信號,而很大部分時間是沒有信號的。

posix_signal設置信號的回調處理,

posix_kill僅僅是把信號放入進程的信號待處理隊列中,所有并不會觸發信號回調,由pcntl_signal_dispatch處理信號隊列中的信號

posix_getpwnam("nginx"):獲取用戶名的uid,gid等信息

pcntl_signal(SIGPIPE, SIG_IGN, false):忽略內核發來的SIGPIPE信號,當連接已closed,進程繼續發數據到無效socket,系統會收到含RST 控制位TCP包,系統會發出一個SIGPIPE信號給進程,告訴進程這個連接已經斷開了,不要再寫了。該信號的默認處理是終止進程,進程可以捕獲它并忽略該信號以免不情愿的被終止。

socket上下文選項:

backlog:用于限制流監聽隊列中未完成連接的連接數量

so_reuseport:重用端口(由內核調度連接到多個監聽同一個端口的進程,由于是通過hash方式來標志連接對應的進程,所以監聽進程數是不能改變的,)

定時器信號處理

pcntl_signal(SIGALRM,"sig_handler");pcntl_alarm(2);function sig_handler($sig){  echo "one second after";}while (1){  pcntl_signal_dispatch();  sleep(1);}
 


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 寿光市| 易门县| 沐川县| 乌兰浩特市| 龙泉市| 长乐市| 武陟县| 来安县| 莫力| 淮安市| 巴林右旗| 吉安县| 玉山县| 湾仔区| 边坝县| 台北县| 马山县| 扎囊县| 策勒县| 辽宁省| 青冈县| 囊谦县| 屏山县| 武安市| 石棉县| 沾化县| 长垣县| 鄂托克前旗| 玛纳斯县| 平昌县| 鄢陵县| 尼玛县| 安仁县| 饶平县| 南充市| 滦南县| 襄城县| 商水县| 商都县| 炎陵县| 铜川市|