php pcntl_fork进程不死掉如何解决(pcntl_fork,php,编程语言)

时间:2024-05-02 17:36:12 作者 : 石家庄SEO 分类 : 编程语言
  • TAG :

    php+pcntl_fork%E8%BF%9B%E7%A8%8B%E4%B8%8D%E6%AD%BB%E6%8E%89%E5%A6%82%E4%BD%95%E8%A7%A3%E5%86%B3

接下来,请跟着小编一起来学习吧!

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进程不死掉如何解决的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:es6有arguments吗下一篇:

4 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18