PHP は、Nginx Connection Close でアクティブに切断し、background_PHP チュートリアルでignore_user_abort を実行します。

WBOY
リリース: 2016-07-13 09:45:54
オリジナル
1519 人が閲覧しました

PHP は、Nginx Connection Close でアクティブに切断し、background_PHP チュートリアルでignore_user_abort を実行します。 は、Nginx Connection Close でアクティブに切断し、background_PHP は、Nginx Connection Close でアクティブに切断し、background_PHP チュートリアルでignore_user_abort を実行します。 チュートリアルでignore_user_abort を実行します。 は Connection Close とignore_user_abort を積極的に切断し、Nginx の下でバックグラウンドで実行します

過去 2 日間、SVN を呼び出して複数のサーバーの更新を同期する PHP は、Nginx Connection Close でアクティブに切断し、background_PHP チュートリアルでignore_user_abort を実行します。 は、Nginx Connection Close でアクティブに切断し、background_PHP は、Nginx Connection Close でアクティブに切断し、background_PHP チュートリアルでignore_user_abort を実行します。 チュートリアルでignore_user_abort を実行します。 プログラムを作成しました。コミット中に長時間ブロックされることを避けるために、待機せずにトリガーのみをリクエストする方法を見つける必要があります。プログラムの更新が完了して結果を返すのは時間がかかりすぎるので、PHP は、Nginx Connection Close でアクティブに切断し、background_PHP チュートリアルでignore_user_abort を実行します。 は、Nginx Connection Close でアクティブに切断し、background_PHP は、Nginx Connection Close でアクティブに切断し、background_PHP チュートリアルでignore_user_abort を実行します。 チュートリアルでignore_user_abort を実行します。 をアクティブに切断する方法を検討しました。午後中ずっと作業した結果、幸いにも多くの問題が見つかりました。主な原因は、Nginx があまりにも面倒だったということです。 。


早速、コードを示します:


PHP は、Nginx Connection Close でアクティブに切断し、background_PHP チュートリアルでignore_user_abort を実行します。 は、Nginx Connection Close でアクティブに切断し、background_PHP は、Nginx Connection Close でアクティブに切断し、background_PHP チュートリアルでignore_user_abort を実行します。 チュートリアルでignore_user_abort を実行します。


リーリー

追加説明:

Apache には通常問題はありません。Windows で xampp を使用してデバッグしましたが、最初はサーバーが Nginx であることがわかりました。

さまざまな条件でN回テストした後、バグは存在しないはずです。 。 。


ignore_user_abort() 関数の問題についても話しましょう

ブラウザを閉じたときに、プログラムがバックグラウンドで実行し続けるかどうかを決定します (以下の例では、テスト時にタイムアウト制限を 0 に設定する必要はありません。1 ~ 2 分に設定するだけです。それ以外の場合は、 HTTP サービスの再起動には時間がかかる場合があります)


PHP は、Nginx Connection Close でアクティブに切断し、background_PHP チュートリアルでignore_user_abort を実行します。 は、Nginx Connection Close でアクティブに切断し、background_PHP は、Nginx Connection Close でアクティブに切断し、background_PHP チュートリアルでignore_user_abort を実行します。 チュートリアルでignore_user_abort を実行します。


簡単に言えば、ユーザーのブラウザを閉じた後もプログラムの実行を継続したい場合は、次のコードを追加する必要があります:

リーリー

ただし、後続のプログラム (主に while ループ) の状況に応じて少し異なります。

通常、プログラムでは制御のために接続ステータスを監視できます:

リーリー

ただし、これら 2 つの関数が正しく動作するには前提条件があります。つまり、プログラムが動作するには、出力コンテンツがあり、現在の Web サーバーの出力キャッシュよりも大きい必要があります。

単にスペース エコー ''; を出力する場合、それを検出するのに数千回のループがかかる可能性があるため、ステータスをより迅速に検出するには、ループするたびにステータス検出をトリガーするのに十分な内容を出力する必要があります。

そこで、ここでよく問題が発生します。ブラウザが切断されると、ignore_user_abort(true); が使用されていない場合でも、出力がないためプログラムは実行を継続し、タイムアウトが発生すると無限ループが実行され続けます。セット、そして幸運なことに、そうでなければ彼は本当に死んでいたでしょう。


以下のテストコードを投稿してください(写真を投稿するのは主に盗難防止のためです、へへ〜)


リーリー

この文をコメントアウトしてみてください
// echo str_repeat(’ ‘, 65536);
また
set_time_limit(0); 使用しない方が良いです 0

www.bkjia.com本当http://www.bkjia.com/PHP は、Nginx Connection Close でアクティブに切断し、background_PHP チュートリアルでignore_user_abort を実行します。 は、Nginx Connection Close でアクティブに切断し、background_PHP は、Nginx Connection Close でアクティブに切断し、background_PHP チュートリアルでignore_user_abort を実行します。 チュートリアルでignore_user_abort を実行します。jc/1036923.html技術記事 PHP は、Nginx Connection Close でアクティブに切断し、background_PHP チュートリアルでignore_user_abort を実行します。 は、Nginx Connection Close でアクティブに切断し、background_PHP は、Nginx Connection Close でアクティブに切断し、background_PHP チュートリアルでignore_user_abort を実行します。 チュートリアルでignore_user_abort を実行します。 は、Nginx で Connection Close とignore_user_abort を積極的に切断します。過去 2 日間、PHP は、Nginx Connection Close でアクティブに切断し、background_PHP チュートリアルでignore_user_abort を実行します。 は、Nginx Connection Close でアクティブに切断し、background_PHP は、Nginx Connection Close でアクティブに切断し、background_PHP チュートリアルでignore_user_abort を実行します。 チュートリアルでignore_user_abort を実行します。 は、複数のサーバーで更新を同期するためにバックグラウンドで実行されていました。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート