gpt4 book ai didi

PHP - 杀死由 pcntl_fork 启动的子进程

转载 作者:IT王子 更新时间:2023-10-29 00:25:20 26 4
gpt4 key购买 nike

我正在使用 pcntl_fork 启动子进程以通过 SMTP 发送电子邮件。

子进程使用 PEAR Mail 包发送电子邮件,但问题是如果远程服务器不响应,则进程将永远运行以等待响应,而不管 php.ini 中设置的任何时间限制.

为了解决这个问题,我使用 pcntl_alarm 函数在 30 秒后触发一个函数,如果子进程仍在运行,它会终止它。

function handlesig($sig) {
global $pid,$node,$resend;
posix_kill($pid,SIGKILL);
mysql_query("insert into log (event) values ('Timed out!')");
}

当我杀死子进程时,尽管我在系统上留下了一个已失效的进程。

我是否应该使用一个不同的信号,它仍然会强制子进程在不等待连接的情况下终止(因为连接永远不会完成)并避免建立已失效的进程?

最佳答案

您需要如上所述等待它,或者使用 posix_setsid 使子进程与父进程分离

关于PHP - 杀死由 pcntl_fork 启动的子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1721124/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com