PHP函數: set_time_limit


函數定義:   

void set_time_limit ( int $seconds )

 

  設置允許腳本運行的時間,單位為秒。如果超過了此設置,腳本返回一個致命的錯誤。默認值為30秒,或者是在php.ini的max_execution_time被定義的值,如果此值存在。

 

  當此函數被調用時,set_time_limit()會從零開始重新啟動超時計數器。換句話說,如果超時默認是30秒,同時,腳本中又設置了25秒,如 set_time_limit(20)。那么,腳本在超時之前可運行總共時間為45秒。

 

安全模式下, 該函數無效.

set_time_limit()函數和配置指令max_execution_time僅僅只影響腳本本身的執行時間。任何時間運行程序的操作,在腳本執行系統調用,如使用system(),流操作,數據庫查詢等,不包括在確定的最大時間,該腳本已運行。這不是在Windows如此,因為測量的時間是真實的。

 

sleep()函數的效果根據操作系統不同而不同, linux下執行程序時的持續時間將會被忽略掉, windows下執行程序時的持續時間將被計算在內.

例子1: 

<?php
if( !ini_get('safe_mode') ){
  set_time_limit(25);
}
?>

 

例子2:

<?php
set_time_limit(20);
while ($i<=10)
{
  echo "i=$i ";
  sleep(100);
  $i++;
}
?>

 說明: 在linux下, sleep不起作用; 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!';
}
?>

超時錯誤捕獲.

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM