ホームページ >バックエンド開発 >PHPチュートリアル >PHP 関数: set_time_limit
関数定義:
void set_time_limit ( int $秒 )
スクリプトの実行に許可される時間を秒単位で設定します。この設定を超えると、スクリプトは致命的なエラーを返します。デフォルト値は 30 秒、または php.ini の max_execution_time で定義された値 (この値が存在する場合) です。
この関数が呼び出されると、set_time_limit()はタイムアウトカウンターを0から再スタートします。つまり、デフォルトのタイムアウトが 30 秒で、set_time_limit(20) などのスクリプトで 25 秒が設定されている場合です。その後、スクリプトはタイムアウトになるまで合計 45 秒間実行できます。
セーフ モードでは、この関数は無効です
set_time_limit() 関数と構成ディレクティブ max_execution_time は、スクリプト自体の実行時間にのみ影響します。プログラムが実行されるとき、スクリプトが system() の使用、ストリーム操作、データベース クエリなどのシステム コールを実行する時間は、スクリプトが実行されている決定された最大時間には含まれません。 Windows では、測定された時間が実際のものであるため、これは当てはまりません。
sleep() 関数の効果はオペレーティング システムによって異なります。Linux でプログラムを実行する場合の継続時間は無視され、Windows でプログラムを実行する場合の継続時間は含まれます。
<?phpif( !ini_get('safe_mode') ){ set_time_limit(25);}?>
例 2:
<?phpset_time_limit(20);while ($i<=10){ echo "i=$i "; sleep(100); $i++;}?>
説明: Linux では、スリープは機能せず、Windows は何も出力せずにタイムアウトを報告します。
例 3:
<?php$es = ini_get('error_reporting');register_shutdown_function( "time_out_callback");set_time_limit( 3 );//假设3秒超时error_reporting( 0 );//屏蔽fatal error//模拟超时while (true) { //echo connection_status()."<br/>";}error_reporting($es);//恢复设置function time_out_callback(){ if(connection_status() == 2) { b(); }}function b(){ echo 'hello world!';}?>
時間エラーキャプチャを出力します。