請問在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.