【问题标题】:Cron job setup and automatic execution on serverCron 作业设置和服务器上的自动执行
【发布时间】:2012-10-31 22:55:32
【问题描述】:

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

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

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

出于这个原因,我想编写动态 php 脚本来生成 230 个 cron 作业链接。

我为大约 230 个链接编写 txt 文件并为 cron 作业生成脚本,这里是示例示例。

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 作业,而不是手动执行,即使在启动时也需要花费大量时间,如果我将来需要修改。

【问题讨论】:

    标签: php cron


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,我扩展了您的逻辑,它简化了我的开发工作,并使 cron 作业仅限于一个链接。
    【解决方案2】:

    我会只使用一个 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 更改为您想要的任何内容。

    【讨论】: