【问题标题】:Using WGET to run a cronjob PHP使用 WGET 运行 cronjob PHP
【发布时间】:2011-08-11 15:02:25
【问题描述】:

我尝试做一个 cron 并每 5 分钟运行一个 url。

我尝试使用 WGET,但是我不想在服务器上下载文件,我只想运行它。

这是我使用的(crontab):

*/5 * * * * wget http://www.example.com/cronit.php

除了 wget 之外,还有其他命令可以用来运行 url 而不是下载它吗?

【问题讨论】:

  • 可能来不及了,不过你可以用curl,默认的操作模式不下载,但服务器上并不总是存在。
  • 是的,curl 看起来确实比使用 wget 更好。

标签: php linux cron wget


【解决方案1】:

您可以通过几种不同的方式告诉 wget 不要下载内容:

wget --spider http://www.example.com/cronit.php

它只会执行一个 HEAD 请求,但可能会做你想做的事

wget -O /dev/null http://www.example.com/cronit.php

这会将输出保存到 /dev/null(一个黑洞)

您可能还想查看 wget 的 -q 开关,它会阻止它创建输出

我认为最好的选择可能是:

wget -q --spider http://www.example.com/cronit.php

除非你有一些特殊的逻辑来检查用于请求页面的 HTTP 方法

【讨论】:

  • wget --quiet --spider --timeout=0 --tries=1 "http://www.example.com/cronit.php" - 这是我用来“ping”一个长时间运行的 php 脚本的工具... 免责声明 我对 wget 没有太多经验或crontab 阅读manual 并在您自己的环境中测试解决方案。
  • 我发现如果我使用-q 选项,脚本(在我的服务器上)不会执行,所以我把它省略了。当我在终端中运行脚本时,我看到了输出,但是当它在 cronjob 中运行时会导致问题吗?我猜不是,但我可能错了。
【解决方案2】:
wget -O- http://www.example.com/cronit.php >> /dev/null

这意味着将文件发送到标准输出,并将标准输出发送到/dev/null

【讨论】:

    【解决方案3】:

    我尝试了以下格式,工作正常

    */5 * * * * wget --quiet -O /dev/null http://localhost/cron.php
    

    【讨论】:

    • 也适用于我,但有点困惑 --quiet-O 如何共存。
    【解决方案4】:

    如果你只想在 php 失败时得到输出:

    php -r 'echo file_get_contents(http://www.example.com/cronit.php);'
    

    这样你只会在脚本失败时收到来自 cronjob 的电子邮件,而不是在调用 php 时。

    【讨论】:

      【解决方案5】:

      您可以使用此代码通过 cpanel 使用 cron 作业来访问脚本:

      wget https://www.example.co.uk/unique-code
      

      【讨论】:

        猜你喜欢
        • 2011-10-22
        • 2013-01-26
        • 2011-12-29
        • 2017-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-08
        • 1970-01-01
        相关资源
        最近更新 更多