簡體   English   中英

Rackspace,負載平衡,flush()和cURL

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM