php超時時間
PHP腳本的執行有三種狀態:
- 0 - NORMAL(正常)
- 1 - ABORTED(異常退出)
- 2 - TIMEOUT(超時)
NORMAL 狀態為正常執行,ABORTED狀態為客戶端終端鏈接,TIMEOUT狀態為PHP執行時間超出時限。
那麽問題來了:PHP的執行時限是多少呢?
PHP內部有一個計時器,默認的執行時間是30秒,這個值可以通過修改php.ini中的max_excution_time或httpd.conf設置中對應的“php_value max_execution_time”參數或使用PHP的set_time_limit()函數來更改。當腳本超時時就會退出。
不過有個問題需要註意一下:set_time_limit()函數只有在非安全模式下才能使用。
還有一個有意思的事情:
在客戶端中斷連接的時候可以設定PHP繼續執行,因為有時候讓腳本完整的運行會帶來很多方便,即使沒有遠程瀏覽器接受腳本的輸出。默認情況下遠程客戶端鏈接中斷腳本即會退出,可以通過 php.ini 的ignore_use_abort 或 httpd.conf 中對應的 “php_value ignore_user_abort” 以及 PHP函數 ignore_user_abort() 控制腳本忽略用戶退出,讓腳本繼續執行。不過這就可能會出現ABORTED、TIMEOUT兩種狀態同時存在的情況(PHP允許這兩種狀態同時存在),此時通過 connection_status() 函數檢查腳本狀態時返回的是3,並且通過 register_shutdown_function() 函數設置的程序關閉出發程序會被執行。
“程序關閉出發程序”就是:
如果在遠程客戶端鏈接中斷時就讓腳本停止執行,並且你想在這一事件發生時執行特定的操作,那麽你可以使用 register_shutdown_function() 函數設置。
php超時時間