分享一個php處理訊號的小例子

藏色散人
發布: 2023-04-10 20:00:01
轉載
4227 人瀏覽過

我們常用的訊號

  • kill   sigterm sigkill【kill指令】

  • #ctrl c sigint【鍵盤發出】

  • reload sinhub【一般從終端發出】

  • ctrl z sigstop 【鍵盤發出】

  • 計時器sigalarm【一個行程只能有一個定時時間,多的會被新值覆蓋】

sigkill和sinstop 在進行訊號處理時,不能被忽略,(處理訊號可以有忽略,執行預設執行使用者指定處理)

php訊號小範例

<?php
        function sighandler($signo){
                echo 'just for sigint',"\n";

        }

        function sighandler2($signo){

                echo 'just for sigquit',"\n";
        }
        declare(ticks=1);

        pcntl_signal(SIGINT,"sighandler");

        pcntl_signal(SIGQUIT,"sighandler2");
        for($i=1;$i<30;$i++){
                file_put_contents('/home/tbtest/out.txt',"$i"."秒\n");
                sleep(1);
        }
登入後複製

~

執行結果

root@lyh:/home/tbtest# php sigint.php 
^Cjust for sigint
^Cjust for sigint
^Cjust for sigint
just for sigquit
^Cjust for sigint
^Cjust for sigint
^Z
[1]+  Stopped                 php sigint.php
root@lyh:/home/tbtest# bg
[1]+ php sigint.php &
root@lyh:/home/tbtest# fg
php sigint.php
root@lyh:/home/tbtest# cat out.txt 
29秒
root@lyh:/home/tbtest#
登入後複製

關於捕捉sigquit

上面捕捉到了jsut for sigquit 是因為我另外起了一個終端,

root@lyh:~# ps -aux |grep php                                    
root     16385  0.5  1.9 377720 19468 pts/2    S+   15:09   0:00 php sigint.php
root     16390  0.0  0.0  11744   932 pts/0    S+   15:09   0:00 grep --color=auto php
root@lyh:~# kill -s sigquit 16385
登入後複製

ps:pcntl_signal_dispatch 比ticks效率會更高

推薦學習:《PHP影片教學

以上是分享一個php處理訊號的小例子的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
php
來源:segmentfault.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板