1. 程式人生 > >php超時時間

php超時時間

有意思 clas 以及 shu php腳本 con 有一個 異常 遠程

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超時時間