0

まず、ignore_user_abortを探していません。代わりに、出力を完成させてドキュメントをユーザーに送信する関数を探します。その後、phpスクリプトで追加のプロセスを実行します。このプロセスには、ユーザーに影響を与えることなく、バックグラウンドプロセスのみでさらに数秒かかります。

ユーザーがこれが完了するのを待つ理由もありません。出力は、すでに追いつく準備ができています。PHPはユーザーへの接続を閉じる機能を提供しますが、作業を完了するためにサーバーにしばらく留まりますか?

4

5 に答える 5

1

php-fpmの最高の機能の1つはfastcgi_finish_requests()です。これにより、クライアント側のセッションが終了し、サーバー側でプロセスが続行されます。また、cronによるquequeまたは遅延処理の代替としてのメッセージングの最適なユースケースです。

ただし、php-fpmに制限されています!

于 2012-06-29T13:29:04.110 に答える
0

作業を2つのファイル(初期処理で出力を生成するファイル)と、さらに数秒かかるがユーザーに完了まで待たせない重いファイルに分割する必要があります。

次に、ブラウザにAjaxまたは非表示のいずれかを使用して呼び出しさせますiframe

2番目のスクリプトで成功/失敗の通知を返し、JavaScriptでそれをキャッチして、実際の初期出力に影響を与えることなく、ユーザーに通知することもできます。

于 2012-06-29T07:13:49.317 に答える
0

あなたが欲しいものはいくつかのajaxのもののように見えます。応答をユーザーに返送すると、スクリプトは終了します。ただし、javascriptを使用すると、ユーザーにとって何も変更されない別のphpスクリプトへのajax呼び出しを開始できます。

于 2012-06-29T07:14:30.217 に答える
0

を使用curl();してローカルホストにpingを実行し、別のスクリプト実行をトリガーして、追加のタスクを実行することができます。

于 2012-06-29T07:16:19.707 に答える
0

スクリプトが実行されたら、キューテーブルにエントリを追加します。次に、cronジョブを実行してキューを処理し、レコードをロックして、処理時に削除します。これにより、cronが重複しても、同じジョブが2回実行されることはありません。

于 2012-06-29T08:06:22.037 に答える