2010-11-18 57 views
14

我對php.ini中設置的最大執行時間沒有疑問。PHP max_execution_time如何工作?

假設的max_execution_time爲3分鐘,考慮以下情況:

  1. 我有一個方法,該方法將在2分鐘內結束。

    但它是在一個循環中,它應該工作5次。所以它變成了10分鐘。

    腳本能否正常運行而不會顯示超時錯誤?爲什麼?

  2. PHP函數只是打印數據,它只需要2分鐘。

    但查詢執行需要5分鐘。

    腳本是否會正常運行?爲什麼?

  3. 我的單個PHP進程本身需要5分鐘。

    但我從命令行調用腳本。

    它會正常工作嗎?爲什麼?

  4. 內存允許和執行時間如何相關?

    如果執行時間的腳本是非常高的

    但它返回的數據

    這是否會影響記憶與否少量?爲什麼?

我想知道內部發生了什麼,這就是爲什麼要問這些。 我不想只是增加時間限制和內存限制。

回答

31

max_execution_time的規則比較簡單。

  • 解釋文件時執行時間開始計數。準備請求之前所需的時間,準備上傳的文件,執行它的事情等的Web服務器不計入執行時間。

  • 執行時間是腳本運行的總時間,包括數據庫查詢,無論它是否在循環中運行。因此,在第一種情況和第二種情況下,腳本將以超時錯誤終止,因爲這是max_execution_time的定義行爲。

  • 使用外部系統調用exec()而不是除了在Windows上計算執行時間。 (Source)這意味着你可以運行一個比max_execution_time花費更長時間的外部程序。

  • 從命令行調用時,max_execution_time默認爲0。 (Source)所以在第三種情況下,您的腳本應該運行無誤。

  • 執行時間和內存使用量沒有任何關係。腳本可以運行數小時而不會達到內存限制。如果是這樣,那麼通常由於變量未被取消設置的循環以及先前保留的內存未正確釋放。

+1

這是部分錯誤的數據庫請求,從我個人的測試和[這個答案](http://stackoverflow.com/a/10027320/1408100)和[這個評論](http:// php。淨/手動/ FR/function.set - 時間 - limit.php#115057) – 2016-02-18 11:16:42

相關問題