2010-01-23 37 views
1

我打算從2個不同服務器使用cronjob同步2個文件夾,計劃每小時運行。 要調度的腳本將檢查前一個實例是否已在運行,如果沒有,繼續處理。在CRON作業內多次調用PHP(自我調用,直到退出條件得到滿足)

所以,第一階段是同步這些文件夾。每日(或更頻繁),第二臺服務器將添加1-2萬個新文件,這些文件需要移到第一臺服務器上進行處理。

處理將由PHP處理。它會打開每個文件,讀取每一行並將其添加到數據庫。

我想要做的就是使用相同的cron來同步文件夾來調用PHP腳本來解析文件。但是因爲我不知道處理這麼多文件需要多長時間,所以我想對PHP在每個請求中處理的文件數量施加限制。

如果PHP腳本沒有限制(文件數量/每個請求),它很容易達到超時。

問題是:有沒有辦法讓我循環並調用這個PHP腳本,直到它完成處理?理想情況下,當wget(文件夾同步)和PHP都完成時,鎖將被刪除,以便可以運行cron的新實例。

任何建議是值得歡迎的, 謝謝

回答

2

你可以把一個header()在腳本的末尾,使用GET參數來控制執行流程。例如:

parse.php?action=1

在腳本:


switch ($_GET["action"]) 
{ 
case 1: 
//action 1 goes here 
header("Location: ..."); 
exit(); 
break; 
case 2: 
//action 2 goes here 
header("Location: ..."); 
break; 
} 
exit(); 
+1

換句話說,保持重定向(通過接頭),直到所有文件進行解析。這應該做的伎倆,謝謝! – Dragos 2010-01-23 13:34:44

相關問題