2012-11-12 101 views
3

我有一種情況,那裏有數以千計的產品,其中每個產品的價格不斷檢查並與其他網站保持同步。爲了快速處理,我創建了多個鏈接。每個鏈接進程50僅記錄。並將5臺服務器上的所有鏈接分開進行快速處理。Cron作業設置和服務器上的自動執行

我設置每個鏈接的cron作業,應在每12小時後處理一次。但單個服務器上的兩個鏈接處理時間之間應該有15分鐘的差距。

由於手動生成的鏈接數量很大。 (大約230個鏈接或更多),我很難爲每個鏈接手動設置cron作業。

因此,我想編寫動態php腳本來生成230 crone作業鏈接。

我寫了txt文件併爲cron作業生成約230個鏈接的腳本,這裏是示例示例。

0 0,12 * * * /usr/local/bin/php -f http://xxx.us/amazon/proc.php? id=1&size=50 
15 0,12 * * * /usr/local/bin/php -f http://xxx.us/amazon/proc.php?id=2&size=50 
30 0,12 * * * /usr/local/bin/php -f http://xxx.us/amazon/proc.php?id=3&size=50 
45 0,12 * * * /usr/local/bin/php -f http://xxx.us/amazon/proc.php?id=4&size=50 
..... 
230 crone job links 

有什麼辦法,我可以在服務器上執行動態生成的腳本來自動安裝所有的cron作業,而不是做手工歷時大量的時間,即使在開始和另外如果在情況下,我需要在今後的修改。

回答

2

這會淹沒crontab並且不會有任何好處,特別是如果您將來獲得更多工作。我建議只使用一個運行15分鐘的腳本並檢查腳本中的時間。按照0,15,30或45分鐘處理鏈接。

一旦獲得更多鏈接,您可以在每次運行中處理更多鏈接,或通過簡單更改crontab中的一行和語句開關來縮短兩次調用之間的時間。

+0

謝謝,我擴展了你的邏輯,並且減輕了我的開發工作量,使cron作業僅限於一個鏈接。 – irfanmcsd

+0

聽起來不錯:)你應該接受答案。 –

1

我只用一個cron-job和一個shell腳本來循環所有的php調用。

如果你是在Linux上,這將是這樣的(未經測試的簡單例子...):

#!/bin/bash 
for ((i = 1; i < 5; i++)) 
do 
    /usr/local/bin/php -f http://xxx.us/amazon/proc.php?id=[$i]&size=50 
    echo "Finished batch: $i" 
done 

,並更改5到任何你想要的。

+1

看起來不錯的做法。這樣我的問題就可以解決了。 – irfanmcsd