【问题标题】:Issues with running multiple cron jobs运行多个 cron 作业的问题
【发布时间】:2013-05-24 08:04:42
【问题描述】:

我正在做一个项目,我需要每天晚上运行 12 个不同的 PHP 文件。出于我的目的,其中 11 个文件正在从不同的外部站点提取数据并将其重新格式化为 XML 文件。第 12 个文件,将 11 个 XML 文件合并为一个主 XML 文件。

我最初将这些合并到一个 PHP 文件中,但它太多了,而且一直超时。它们工作正常,按原样分开。

我正在使用 GoDaddy 共享托管计划,并开始设置 cron 作业以每晚运行这些文件。但是,GoDaddy 将您的 cron 作业总数限制为 10 个。

因此,作为替代方案,我在前 10 个文件的底部放置了一个标头重定向(显然最后一个文件不需要重定向),以重定向到下一个文件并运行它。这将 11 个 cron 作业合并为 1 个。

// On to the next
header('Location: http://www.domain.com/secondFile.php');

当时我没有意识到,标头重定向只能在浏览器中工作,而不是在 cron 作业中。我收到 302 已临时移动 消息。

我在这里还有哪些其他选择?是否存在在 cron 作业中起作用的重定向?

感谢您提供的任何信息。



感谢 Barmar 的帮助,我现在可以正常工作了。在 GoDaddy 主机上为遇到相同问题的其他人发布格式。

generatexml.sh

#!/bin/sh
/web/cgi-bin/php5 /home/content/u/s/e/username/html/firstFile.php
/web/cgi-bin/php5 /home/content/u/s/e/username/html/secondFile.php
/web/cgi-bin/php5 /home/content/u/s/e/username/html/thirdFile.php

等等

【问题讨论】:

    标签: php redirect cron


    【解决方案1】:

    运行包含 shell 脚本的单个 cron 作业以运行每个 PHP 脚本:

    #!/bin/sh
    php firstFile.php
    php secondFile.php
    ...
    

    【讨论】:

    • 也许您可以提供更多信息。我以前从未使用过 shell 脚本,也不知道它们在共享主机上的效果如何。我使用上面显示的格式(使用绝对路径)创建了我的 .sh 文件并上传了它。然后我设置了一个 cron 来运行它。但是,报告显示“权限被拒绝”错误。
    • 我对共享托管服务没有经验。您需要确保脚本具有执行权限。
    • 好吧,我添加了执行权限,那个错误就消失了。现在我得到'/bin/sh^M:错误的解释器:没有这样的文件或目录'。所以,根据这个(support.godaddy.com/help/article/3483/what-is-a-cron-job)我改变了路径。现在我收到这个错误:/web/cgi-bin/php5^M: bad interpreter: No such file or directory
    • 您的文件有 Windows CRLF 换行符,而不是 Unix LF。您需要转换文件格式或使用自动翻译的文件传输协议。
    • 好吧,我们越来越近了。自从更改为 Unix 后不再出现错误。但是,在报告中,它似乎只是在呼应 .sh 文件中的文本,而不是实际运行我列出的 php 文件—— php firstFile.php php secondFile.php (显然是在单独的行上)。
    【解决方案2】:

    通过您的网络服务器和wget 运行脚本。

    【讨论】:

    • 鉴于我在下面的 cmets 中提到的错误,我也不完全确定如何设置 wget。
    猜你喜欢
    • 1970-01-01
    • 2016-02-04
    • 2021-05-10
    • 2011-11-07
    • 2016-09-14
    • 2012-02-26
    • 2012-08-01
    • 2011-08-18
    • 1970-01-01
    相关资源
    最近更新 更多