温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

php如何处理信号

发布时间:2021-11-26 15:37:23 来源:亿速云 阅读:230 作者:小新 栏目:编程语言

这篇文章将为大家详细讲解有关php如何处理信号,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

我们常用的信号

  • 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如何处理信号”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php
AI