NginxがPHP-FPMプロセスとは何の関係もないことは知っていますが、ユーザーが中止した場合にPHP-FPMプロセスが停止して、不要なことを続けたりリソースを浪費したりしないようにしたい. PHP-FPM/Nginx のtrigger_error
場合、ユーザーの中止に関係なく発生します。
<?php
sleep(30);
trigger_error('Still happened?');
?>
PHP-FPM でユーザーを中止するにはどうすればよいですか? (もし可能なら)
nginx
PHP スクリプトで動作を設定する前に、設定を確認する必要があります。
@YAAKによってリンクされた設定は、常にで機能するとは限りませんnginx
。私の実際のケースでは、PHP 側で何をしても、スクリプトを停止することはできません。
nginx fastcgiパラメーターfastcgi_ignore_client_abort
(デフォルトで に設定)で再生するとoff
役立つ場合があります。
さらに、手動の解決策 (開発環境のみ) は ( Linuxで):を実行することです。sudo service php-fpm restart
これにより、スクリプトを実行しているワーカー プロセスが強制終了されます (注意:これにより、すべてのワーカーまたは他の実行中のサービスが強制終了されます)。
クライアントを切断してスクリプトを中止するかどうかを決定できます。
PHPマニュアルによると:接続処理
この動作を設定するには、ignore_user_abort
ignore_user_abort(FALSE);
クライアントが切断された後、PHPスクリプトの実行を中止します。
ignore_user_abort(TRUE);
クライアントの切断を無視し、スクリプトの実行を続行します。
2番目のケースではset_time_limit
、タスクを完了するのに十分な時間をスクリプトに与えるために、ニーズに基づいて使用することもできます。
PHP-FPM/nginx
この設定は、環境で正常にテストされています。