Cron作业设置和服务器上的自动执行

时间:2012-11-12 13:59:08

标签: php cron

我的情况是,有数以千计的产品,每个产品价格不断检查,并与其他网站保持同步。为了快速处理,我创建了多个链接。每个链接进程仅记录50条记录。并划分了5台服务器上的所有链接,以便快速处理。

我为每个链接设置了cron作业,每12小时后应处理一次。但是在单个服务器上的两个链接处理时间之间应该有15分钟的差距。

由于手动生成了很多链接。 (大约230个链接或更多),我不容易为每个链接手动设置cron作业。

因此我想编写动态php脚本来生成230个crone作业链接。

我写了txt文件并为cron job生成了大约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 个答案:

答案 0 :(得分:2)

这将淹没crontab并且不会有任何好处,特别是如果你将来获得更多的工作。我建议只使用一个运行15分钟的脚本并检查脚本内部的时间。根据0,15,30或45分钟处理您的链接。

一旦获得更多链接,您可以在每次运行中处理更多链接,或者通过简单地更改crontab中的一行和语句切换来缩短调用之间的时间。

答案 1 :(得分: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更改为您想要的任何内容。