我在1台服务器上运行了50个Wordpress安装。每个Wordpress网站都有一个必须每5分钟执行一次的脚本。我不想使用Wordpress的内置cron,并希望从cron运行脚本。什么是最好的解决方案?
* 解决方案1:为每个wordpress安装创建一个cron作业*
5 * * * * /usr/bin/php /wordpress-site-1/cron.php
5 * * * * /usr/bin/php /wordpress-site-2/cron.php
5 * * * * /usr/bin/php /wordpress-site-3/cron.php
... + 47 other scripts
* 解决方案2:创建1个cron作业并运行bash脚本*
5 * * * * /run/the-script
剧本:
#!/bin/bash
# include the 50 sites in array
array=( wordpress-site-1 wordpress-site-2 wordpress-site-3 ...)
for i in "${array[@]}"
do
{execute php file)
done
答案 0 :(得分:2)
到目前为止,拥有50个单一的crons比在一个脚本中运行效率要高得多。唯一的缺点是你必须在你的crontab中插入50行。但是,嘿,如果这就是一切......
拥有50个crons而非一个crons的原因:
至于最后一点(划分有效载荷),我建议在零,5过去,10过去等处理前10个脚本,然后在一分钟后执行接下来的10个脚本。这样它们就不会同时运行,每5分钟就会产生一次高峰值负载:
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/bin/php /wordpress-site-1/cron.php
... cron 2 - 10
1,6,11,16,21,26,31,36,41,46,51,56 /usr/bin/php /wordpress-site-11/cron.php
... cron 11-20
... etc.
答案 1 :(得分:0)
这是您可以使用的模式:
0,5,10,15,20,25,30,35,40,45,50,55 * * * *
试试这个解决方案:
cat cronjob
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/bin/php /wordpress-site-1/cron.php
.
.
.
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/bin/php /wordpress-site-50/cron.php
然后:
chmod +x cronjob
chmod +x /wordpress-site-1/cron.php
.
.
.
chmod +x /wordpress-site-50/cron.php
/etc/init.d/crond start #redhat based servers like centos
/etc/init.d/cron start #debian based servers like ubuntu
crontab cronjob
注意:您可以使用for loop
来简化操作。
答案 2 :(得分:0)
如果你希望每5分钟运行一次脚本,你可以这样做:
*/5 * * * * /run/the-script