2

我正在使用 php-fpm 和 pcntl_fork 发出一个严重的问题。

两者都工作得很好,但是当它们在一起时,我会“松散”网络浏览器的标准输出。这意味着 fork 可以工作,但标准输出(客户端浏览器)对于每个人(所有子级和父级)都完全丢失了。

在 fpm 之外(例如在命令行中),fork 按预期工作(所有子项都打印到终端输出)。

有人做了什么工作还是 php-fpm 的一般问题?

4

1 回答 1

2

好的,我终于找到了好方法...

我使用的代码(可以在很多地方找到)使用exit(0)子进程上的函数来终止它。但是在 php-fpm 这也会杀死主进程......这就是为什么它在第一次子调用后没有输出......

这是解决方案(在pcntl_fork用户评论中找到):

register_shutdown_function(create_function(
    '$pars', 'ob_end_clean(); posix_kill(getmypid(), SIGKILL);'
), array());

这将在脚本末尾按预期杀死任何僵尸,而不会杀死主进程

于 2012-05-18T22:28:26.903 回答