[英]Rackspace, load balancing, flush(), and cURL
首先,如果這個問題含糊不清或令人困惑,我道歉。 事實是,我對正在發生的事情感到很困惑,而且我對如何糾正它更加困惑。
我正在使用Rackspace雲服務器。 正如您所希望的那樣(如果您正在閱讀此問題),Rackspace會使用負載均衡器,這種負載均衡器可以殺死持續超過30秒的腳本。 不幸的是,我正在處理一個涉及許多大文件傳輸的巨大處理腳本。 不用說,腳本有時可能需要一個小時才能運行。 幸運的是,這個腳本不需要經常運行。 不幸的是,我堅持使用Rackspace雲 - 對於我的老板來說,升級根本不是一個選擇。
通過使用PHP的flush()
函數,加上一些瑣碎的空白,我幾乎總能避免這個超時問題。 這不是一個很好的解決方案,但考慮到我的限制並使用我的傳輸腳本,它的效果非常好。
...當我在瀏覽器中加載腳本時。
當我嘗試使用cron作業調用腳本時,腳本會超時。 當我嘗試從Hurl.it調用它時,它會超時 。 但是,當我在瀏覽器中加載它時,一切似乎再次起作用。
我該如何解決這個問題? 我需要使用cron作業調用此腳本,但無論我做什么,它似乎總是失敗。
謝謝您的幫助!
如果它是racksace負載平衡器超時,您可以通過API調整負載平衡器超時最多120秒。 如果您需要腳本運行的時間超過此時間,則可能需要將工作拆分為幾個較小的部分。 無論如何,這是一個好主意,因為較長的執行時間會引發網絡丟失問題,其中可以運行幾個較小的腳本,並且每個腳本都更容易驗證。
參考:
===如果你正在點擊php.ini max_execution_time,那么每次迭代循環調用set_time_limit(20)
(我對你的代碼一無所知)或類似情況,都會不斷重置計時器。
來自php.net:
調用時,set_time_limit()從零重新啟動超時計數器。 換句話說,如果超時是默認的30秒,並且腳本執行25秒,則進行諸如set_time_limit(20)之類的調用,腳本將在超時之前運行總共45秒。
參考:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.