我正在使用 php-fpm 和 pcntl_fork 发出一个严重的问题。
两者都工作得很好,但是当它们在一起时,我会“松散”网络浏览器的标准输出。这意味着 fork 可以工作,但标准输出(客户端浏览器)对于每个人(所有子级和父级)都完全丢失了。
在 fpm 之外(例如在命令行中),fork 按预期工作(所有子项都打印到终端输出)。
有人做了什么工作还是 php-fpm 的一般问题?
好的,我终于找到了好方法...
我使用的代码(可以在很多地方找到)使用exit(0)
子进程上的函数来终止它。但是在 php-fpm 这也会杀死主进程......这就是为什么它在第一次子调用后没有输出......
这是解决方案(在pcntl_fork
用户评论中找到):
register_shutdown_function(create_function(
'$pars', 'ob_end_clean(); posix_kill(getmypid(), SIGKILL);'
), array());
这将在脚本末尾按预期杀死任何僵尸,而不会杀死主进程