標籤:通過 狀態 修改 on() 參數 指令碼逾時 lis 有一個 有意思
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逾時時間