这篇文章将为大家详细讲解有关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 sigintjust for sigquit^Cjust for sigint^Cjust for sigint^Z[1]+ Stopped php sigint.phproot@lyh:/home/tbtest# bg[1]+ php sigint.php &root@lyh:/home/tbtest# fgphp sigint.phproot@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.phproot 16390 0.0 0.0 11744 932 pts/0 S+ 15:09 0:00 grep --color=auto phproot@lyh:~# kill -s sigquit 16385
ps:pcntl_signal_dispatch 比ticks效率会更高
关于“php如何处理信号”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。