10

PHP スクリプトは HTTP ページ リクエストの後も実行を続けることができます。

また、OS がスクリプトを強制的に中止するタイミングを検出するイベントはありますか? または、予測する内部タイマーを保持するにはどうすればよいmax_execution_timeですか?

4

5 に答える 5

7

exit()/die()は、php スクリプトを停止します。

スクリプトを停止するタイミングを知るには、マイクロタイムをタイマーとして使用、最大実行時間を定数として保存 (または php.ini ファイルからフェッチ) するだけです。

また、接続処理情報も確認できます。connection_aborted()connection_status( ) などがある場所

しかし、あなたが解決しようとしている問題は何ですか?

于 2009-09-15T17:25:46.290 に答える
4

リクエストがシャットダウンされた瞬間にコールバックするには、 を使用しますregister_shutdown_function( myfunction )

ほとんどの POSIX 環境と同様に、PHP もシグナル ハンドラをサポートしています。SIGTERMイベントに独自のハンドラーを登録できます。

function my_abort_handler( $signo ) {
   echo "Aborted";
}

pcntl_signal( SIGTERM, "my_abort_handler" );
于 2009-09-15T18:05:20.983 に答える
2

スクリプトが自分自身にシグナルを送信できるようにするpcntl-alarmを確認することをお勧めします。また、OS が送信できる kill シグナルをキャッチする方法のサンプルも含まれています。そして実際に死ぬ()。

于 2009-09-15T17:29:56.687 に答える
1

$start=microtime(true)タイムスタンプを返す a を開始できます。次に、チェックmicrotime(true)を続けて開始時間からそれを差し引いて、実行後の秒数を取得できます。

しかし、いいえ、リクエストが長すぎるという理由で終了するスクリプトを「キャッチ」することはできません。シャットダウン ハンドラで土壇場で何かをしようとすることもできますが、PHP がそれを尊重するかどうかはわかりません。

connection_timeout()を正確に実行する関数があったようですが、非推奨になり、削除されました。ただし、これに代わるものがあるかどうかはわかりません。

于 2009-09-15T17:26:43.760 に答える