PHP スクリプトは HTTP ページ リクエストの後も実行を続けることができます。
また、OS がスクリプトを強制的に中止するタイミングを検出するイベントはありますか? または、予測する内部タイマーを保持するにはどうすればよいmax_execution_time
ですか?
exit()/die()は、php スクリプトを停止します。
スクリプトを停止するタイミングを知るには、マイクロタイムをタイマーとして使用し、最大実行時間を定数として保存 (または php.ini ファイルからフェッチ) するだけです。
また、接続処理情報も確認できます。connection_aborted()やconnection_status( ) などがある場所
しかし、あなたが解決しようとしている問題は何ですか?
リクエストがシャットダウンされた瞬間にコールバックするには、 を使用しますregister_shutdown_function( myfunction )
。
ほとんどの POSIX 環境と同様に、PHP もシグナル ハンドラをサポートしています。SIGTERM
イベントに独自のハンドラーを登録できます。
function my_abort_handler( $signo ) {
echo "Aborted";
}
pcntl_signal( SIGTERM, "my_abort_handler" );
スクリプトが自分自身にシグナルを送信できるようにするpcntl-alarmを確認することをお勧めします。また、OS が送信できる kill シグナルをキャッチする方法のサンプルも含まれています。そして実際に死ぬ()。
$start=microtime(true)
タイムスタンプを返す a を開始できます。次に、チェックmicrotime(true)
を続けて開始時間からそれを差し引いて、実行後の秒数を取得できます。
しかし、いいえ、リクエストが長すぎるという理由で終了するスクリプトを「キャッチ」することはできません。シャットダウン ハンドラで土壇場で何かをしようとすることもできますが、PHP がそれを尊重するかどうかはわかりません。
connection_timeout()を正確に実行する関数があったようですが、非推奨になり、削除されました。ただし、これに代わるものがあるかどうかはわかりません。