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