ignore_user_abort() は、クライアントが閉じているときでも PHP コードを実行でき、サーバーなどの実行スクリプトを開くだけで、いわゆるスケジュールされたタスク機能と継続的なプロセスを実現できます。 Apache が再起動されるか、出力のあるスクリプトがある場合、PHP スクリプトは常に実行状態になります。これは一見非常に実用的ですが、価格は PHP がスクリプトを実行する継続的なプロセスであるため、非常に高価です。多くの予期せぬ機能を実現できます。
定義と使用法ignore_user_abort() 関数は、クライアントからの切断によってスクリプトの実行を終了するかどうかを設定します。
この関数は、user-abort によって設定された前の値 (ブール値) を返します。
構文ignore_user_abort(setting) パラメータ 説明 settings オプション。 true に設定すると、ユーザーからの切断は無視されます。false に設定すると、スクリプトの実行が停止します。このパラメータが設定されていない場合は、現在の設定が返されます。注: PHP は、クライアントに情報を送信しようとするまで、ユーザーが切断したかどうかを検出しません。 echo ステートメントを使用するだけでは、メッセージが確実に送信されるわけではありません。flush() 関数を参照してください。
使用例:
(1) set_time_limit()関数と組み合わせてループスクリプト実行タスクを実装
<p><?php</p><p>ignore_user_abort();</p><p>set_time_limit(0);</p><p>$interval=60*15;//说明:每隔15分钟循环执行</p><p>do{</p><p>//执行的业务</p><p>}while(true);</p>
(2) 実装ファイルの出力をカスタマイズし、ignore_user_abort() 関数の実行結果を追跡します
<p><?php</p><p>ignore_user_abort(TRUE);</p><p>set_time_limit(0);</p><p>$interval=10;</p><p>$stop=1;</p><p>do{</p><p> if($stop==10) break;</p><p> file_put_contents('scutephp.com.php',' Current Time: '.time().' Stop: '.$stop);</p><p> $stop++;</p><p> sleep($interval);</p><p>}while(true);</p>
scutephp.com.php を開きますファイルの内容は次のとおりです。 現在時刻: 1273735029 停止: 9 原則として、クライアントがスクリプトを終了してもスクリプトは 10 秒ごとに実行され、現在時刻と終了時点が出力されます。 ignore_user_abort() 関数の具体的な効果をテストできることを確認します。
例を通して、スケジュールされたタスクや継続的なプロセスなどを実装する場合、ignore_user_abort() 関数の使用が依然として非常に実用的であることがわかりました。