2016-03-17 69 views
0

我有一個WordPress腳本作爲cron作業運行。目前它無限期地每分鐘運行一次。從cron循環php腳本?

/usr/bin/php -q /home/domain1/public_html/wp-content/plugins/tdw/postit.php > /dev/null 2>&1 

問題是我的服務器越來越大的50個+域和crons正在運行到彼此導致錯誤或崩潰的數據庫。

有沒有一種方法可以讓它順序運行?像運行domain1腳本等待一分鐘,然後運行domain2 ...循環訪問url列表。

謝謝你的幫助。

回答

0

把它們放在一個bash腳本,像

#!/bin/bash 

/usr/bin/php -q /home/domain1/public_html/wp-content/plugins/tdw/postit.php > /dev/null 
sleep 60s 
/usr/bin/php -q /home/domain2/public_html/wp-content/plugins/tdw/postit.php > /dev/null 
sleep 60s 
/usr/bin/php -q /home/domain3/public_html/wp-content/plugins/tdw/postit.php > /dev/null 
sleep 60s 
# and so on... 

,並啓動從cron。

如果路徑除了域名都一樣,你也可以使用一個php腳本,它爲每個域生成正確的路徑,然後通過exec()執行腳本。例如,它可以通過PHP的directory functions迭代/ home文件夾的內容。這樣,您在添加域時不必更新腳本。

這樣一個腳本會是什麼樣子

<?php 

$template = '/usr/bin/php -q /home/%s/public_html/wp-content/plugins/tdw/postit.php > /dev/null'; 

if ($handle = opendir('/home')) { 
    while (false !== ($entry = readdir($handle))) { 
     $command = sprintf($template, entry); 
     exec($command); 
     sleep(60); 
    } 
} 

?>