2013-03-03 105 views
2

我有一個文件夾需要由php腳本處理。假設文件夾中有1000個文件,每個文件在處理後都會被刪除。如何防止php超時,運行循環?不操縱max_execution_time?

如何在不觸碰服務器max_execution_time的情況下從瀏覽器運行或重新運行php腳本,而無需操作max_execution_time本身並且不使用cronjobs?

我想到了一些解決方案:

-having有運行相同while循環和25秒後自行停止並激活其他腳本接管工作2個PHP腳本。並且這個前後直到文件夾是空的。

- 使用ajax/javascript停止執行腳本並重新激活它。

有更好的解決方案嗎?

+0

從cli在後臺運行腳本,沒有時間限制 – 2013-03-03 23:47:22

+0

在php腳本中使用time()差異 – Sam 2013-03-03 23:47:57

+0

被重定向警告,許多重定向常常會被現代瀏覽器暫停。 – BenOfTheNorth 2013-03-03 23:49:38

回答

2

我成功地使用了ajax/javascript。 您可以保留在$ _SESSION中處理的項目數量。我運行批處理,可以工作超過一個小時,沒有問題。

+0

這是否適用於ignore_user_abort(TRUE);所以你可以在處理時離開頁面?你能幫助我多一點,你的腳本看起來是什麼樣,它會停止並重新運行相同的PHP? – coder 2013-03-03 23:59:40

+0

您可以在腳本中添加ignore_user_abort(TRUE)。基本上,第一個腳本允許客戶端設置任務。它向客戶端發送表單以上傳包含數千行的csv文件。當客戶發佈表單時,它會計算$ _SESSION中的行數和存儲信息。客戶端被重定向到進度條頁面。該頁面在後臺執行ajax調用。每次調用時,腳本處理100行,存儲它處理的行數,並向客戶端返回完成百分比以更新進度條。下一個請求處理接下來的100行... – Bertrand 2013-03-04 16:28:50