2013-10-13 23 views
2

15分鐘後掛我有一個長期運行的PHP腳本,運行在IIS(通過WebMatrix的3PHP腳本在IIS

安裝IISEXpress對於第15分鐘,它工作正常,查詢亞馬遜產品廣告API,一次沖洗輸出到瀏覽器一行顯示它的進度,然後它會停止顯示任何進度

我相當確定這個問題是不是與腳本或亞馬遜API,因爲它達到了不同的點每次都進行一次,但總是在15分鐘時停止(我有一段時間內置於腳本中,並且在瀏覽器中刷新頁面的時間)

爲了防止腳本錯誤中止30秒我設置後:

set_time_limit(36000); in the script 

我聽說IIS也許有15分鐘後一個CGI超時,並試圖加入CGI行ApplicationHostConfig覆蓋任何默認的超時時間。沒有效果。

<location path="myAmazonScript"> 
     <system.webServer> 
      <cgi createCGIWithNewConsole="true" createProcessAsUser="false" timeout="00:20:00" /> 
      <handlers> 
       <remove name="PHP54_via_FastCGI" /> 
       <add name="PHP via FastCGI" path="*.php" verb="*" modules="FastCgiModule" scriptProcessor="C:\Program Files (x86)\iis express\PHP\v5.4\php-cgi.exe" responseBufferLimit="0" resourceType="Either" /> 
      </handlers> 
     </system.webServer> 

(如果你想知道,我設置ResponseBufferLimit 0強制沖洗。)

別處在system.webserver部分,我們有:

<cgi /> 
<fastCgi> 
    <application fullPath="C:\Program Files (x86)\iis express\PHP\v5.4\php-cgi.exe" monitorChangesTo="php.ini" activityTimeout="600" requestTimeout="600" instanceMaxRequests="10000"> 
     <environmentVariables> 
      <environmentVariable name="PHP_FCGI_MAX_REQUESTS" value="10000" /> 
      <environmentVariable name="PHPRC" value="C:\Program Files (x86)\iis express\PHP\v5.4" /> 
     </environmentVariables> 
    </application> 
</fastCgi> 

沒有其他的 「超時」值存在。

順便說一句,我不能運行appcmd或通過GUI訪問IIS設置,可能是因爲是IISExpress。但applicationhost.config似乎工作正常。

任何意見非常讚賞。

Jonathan

+0

你有沒有解決這個問題?我正在用單元測試運行同樣的事情......單元測試連接在15分鐘後重置,但我可以從服務器日誌中看到它們仍在服務器上運行16分鐘 – Kip

回答

0

服務器上的IIS-Manager允許您管理FastCGI設置。 activityTimeout(600)和idleTimeout(300)的默認值完全相加15分鐘。

我給每個人都加了一個零,我的50分鐘腳本就像魅力一樣。