国产探花免费观看_亚洲丰满少妇自慰呻吟_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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 高碑店市| 阿合奇县| 大方县| 赞皇县| 广西| 烟台市| 黄冈市| 吉首市| 沙湾县| 白山市| 蚌埠市| 宜章县| 如东县| 文成县| 竹溪县| 防城港市| 义乌市| 瓦房店市| 广宁县| 崇信县| 十堰市| 漾濞| 嘉祥县| 于都县| 汽车| 烟台市| 龙里县| 南和县| 友谊县| 井冈山市| 合川市| 文水县| 吉木萨尔县| 淮阳县| 卢氏县| 延边| 博爱县| 平谷区| 平利县| 长岛县| 正阳县|