php-fpm和pcntl_fork

时间:2012-05-18 21:46:22

标签: nginx php

我使用php-fpm和pcntl_fork发出严重问题。

两者都运行良好,但当它们在一起时,我“松散”了Web浏览器的标准输出。这意味着fork工作,但标准输出(客户端浏览器)完全丢失给所有人(所有孩子和父母)。

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

有人做了什么工作或者php-fpm的一般问题吗?

1 个答案:

答案 0 :(得分:2)

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

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

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

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

这会在脚本结束时按预期杀死任何僵尸,而不会杀死主进程