關於set_time_limit(0)的問題?

來源:互聯網
上載者:User
請問在iis伺服器下,php中的set_time_limit(0)為什麼沒有作用?


回複討論(解決方案)

怎麼個不起作用 體現在哪?

set_time_limit(0);
$time_start = time(true);
$chk = false;
while ($chk === false) {
$time_end = time(true);
if ($time_end - $time_start > 80) {
printf("time out!");
$chk = true;
}
}
這段代碼沒有打出time out。而且報500的錯誤。

表示沒得iis下用過php。。。

500錯誤是不是php.ini中display_errors = On沒設定,還有就是while迴圈 $time_end - $time_start應該一直等於0吧

我在apache環境下測試是成功的 不知道是不是跟服務有關

500錯誤是不是php.ini中display_errors = On沒設定,還有就是while迴圈 $time_end - $time_start應該一直等於0吧


為什麼$time_end - $time_start應該一直等於0?

我在apache環境下測試是成功的 不知道是不是跟服務有關


在iis中應該怎麼設定呢?

我把80改小一點就可以。

超過了最大執行時間? 開啟錯誤提示功能看看。

哦,加了set_time_limit(0); 那跟最大執行時間沒關係。

開啟錯誤提示功能看是否有報錯。

幾個原因排查一下:
1. php是否運行在安全模式下,如果是的話,set_time_limit是無效的。

2. IIS伺服器本身配置了逾時,且優先順序更高,即使你 php設定了不逾時,由於伺服器的逾時機制,還是會做逾時處理,因此在逾時後會觸發致命錯誤,這就是導致500錯誤的原因。
參考一下這篇文章:http://www.iisadmin.co.uk/?p=7

哦,加了set_time_limit(0); 那跟最大執行時間沒關係。

開啟錯誤提示功能看是否有報錯。


我把錯誤提示功能開啟,在log中沒有發現有錯誤提示。

問題解決了,果然是iis7的問題:
IIS7->FastCGI設定->雙擊"php-cgi.exe"->"活動逾時" 項預設是設定為70,我改為最大值,2592000.

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.