我有一段相當長的內存密集循環。我無法一次運行它,因爲我的服務器放置了執行的時間限制,或者我的內存不足。如何將一段非常長的內存密集的循環分割爲更小的塊
我想把這個循環分成更小的塊。
我靈機一動分裂環成小塊,然後設置一個位置標頭重新加載新的啓動條件的腳本。
我的老SCRIPT(僞代碼。我知道下面的缺點)
for($i=0;$i<1000;$i++)
{
//FUNCTION
}
MY NEW SCRIPT
$start=$_GET['start'];
$end=$start+10;
for($i=$start;$i<$end;$i++;)
{
//FUNCTION
}
header("Location:script.php?start=$end");
然而,我的新的腳本成功運行了幾次迭代,然後我獲得服務器錯誤「太多的重定向」
有沒有辦法解決?有人可以提出更好的策略嗎?
我是一個共享的服務器上,所以我不能增加內存分配或腳本的執行時間。
我想要一個PHP解決方案。
謝謝。
難說不知道你的循環做什麼。你能發佈更多的代碼嗎? – Jack 2012-04-20 03:19:01
PHP真的很糟糕,垃圾收集。最近有很多建議和對基本代碼的改進(包括一個新的GC庫),但是我已經對它們全部進行了修改,並且在某些情況下,PHP不會清除內存,不管有多少個unset或睡覺你做。嘗試給出的各種答案,但請注意,如果沒有人能夠正常工作,那麼您可能會將頭靠在牆上。 – Anthony 2012-04-20 03:28:59
你的循環包含sql查詢嗎? – denil 2012-04-20 04:59:51