2

php-fpmとpcntl_forkを使用して深刻な問題を発行しています。

どちらもかなりうまく機能していますが、一緒にすると、Webブラウザの標準出力を「失う」ことになります。これは、フォークが機能することを意味しますが、すべての人(すべての子と親)の標準出力(クライアントブラウザー)は完全に失われます。

fpmの外部(コマンドラインなど)では、フォークは期待どおりに機能します(すべての子がターミナル出力に出力されます)。

誰かが何か動作しているのですか、それとも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 に答える