php pcntl_fork进程不死掉如何解决
导读:本文共1931.5字符,通常情况下阅读需要6分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要:接下来,请跟着小编一起来学习吧! php pcntl_fork进程不死掉的解决办法:1、打开相应的PHP代码文件;2、查看php多线程处理代码;3、通过“public function installSignal(){pcntl_signal(SIGTERM, [$this, '... ...
目录
(为您整理了一些要点),点击可以直达。接下来,请跟着小编一起来学习吧!
php pcntl_fork进程不死掉的解决办法:1、打开相应的PHP代码文件;2、查看php多线程处理代码;3、通过“public function installSignal(){pcntl_signal(SIGTERM, [$this, 'sigHandle'])...};”方式安装信号处理器即可。
php pcntl_fork 进程不死掉怎么办?
问题描述
第一次使用php多线程处理任务引起僵尸进程问题,原因是子进程没有发送结束信号,父进程没有等待子进程的结束
理解
pcntl_fork 返回-1:开启进程失败 0:表示当前是子进程 大于零:当前是父进程,返回值是子进程pid
fork的子进程代码执行完后必须exit(),发送结束信号。否则继续fork子进程。获取父进程pid = posix_getppid(), 当前pid = getmypid()或者posix_getpid()
父进程最好等待子进程执行结束回收子进程通过pcntl_wait()、pcntl_waitpid()实现同步、异步等待父进程循环子进程:
$result=pcntlwaitpid($pid,$status,WNOHANG);
$result等于-1时代表子进程结束
信号处理器的作用是根据处理子进程返回的结束信号进行处理
php pcntl_fork进程不死掉如何解决的详细内容,希望对您有所帮助,信息来源于网络。