【问题标题】:Using CRON jobs to visit url?使用 CRON 作业访问 url?
【发布时间】:2012-10-26 21:46:51
【问题描述】:

我有一个 Web 应用程序必须执行重复的任务,发送消息和警报,我已经使用脚本页面在浏览器中加载时执行这些任务,即 http://example.com/tasks.php,我通过以下方式将其包含在内iframe 在我的网络应用程序的每个页面中。

现在我想将其更改为使用 CRON 作业,因为第一种方法可能会导致性能卡顿,那么我该如何创建访问 http://example.com/tasks.php 的 CRON 作业。但是,我不希望这个 CRON 作业创建输出文件,例如 day.*!

我将应用程序托管在允许通过 cPanel 进行 CRON 作业的共享托管服务上。

【问题讨论】:

    标签: linux web-applications web cpanel cron-task


    【解决方案1】:
    * * * * * wget -O - http://yoursite.com/tasks.php >/dev/null 2>&1
    

    这应该对你有用。只需有一个加载页面的wget 脚本即可。

    使用-O -表示将web请求的输出发送到STDOUT(标准输出)

    通过添加>/dev/null,我们指示标准输出重定向到黑洞。 通过添加2>&1,我们指示STDERR(错误)也发送到STDOUT,因此所有输出都将发送到黑洞。 (所以它会加载网站,但永远不会在任何地方写入文件)

    【讨论】:

    • 开头的这些星号是什么
    • @AshkanMobayenKhiabani 它们是 cron 语法的一部分:nncron.ru/help/EN/working/cron-format.htm
    • 在 Raspbian Stretch Lite 下唯一对我有用的解决方案。完美的! :D
    • 注意:引用 URL 是个好主意,如果它包含查询,则如果没有引用所有内容,它可能无法正常工作。
    【解决方案2】:

    你不需要重定向,只使用

    * * * * * wget -qO /dev/null http://yoursite.com/tasks.php
    

    【讨论】:

    • 为什么不需要重定向?
    • -q|--quiet Turn off Wget's output.
    • 你的命令也使用了重定向,但是以其他形式 -qO /dev/null,不是吗?
    • 严格来说,不是重定向,因为 I/O 重定向 是一个 shell 的东西
    【解决方案3】:

    您可以使用curl,就像在这个thread中一样

    对于懒人:

    */5 * * * * curl --request GET 'http://exemple.com/path/check.php?param1=1'
    

    这将每 5 分钟执行一次。

    【讨论】:

      【解决方案4】:

      也可以使用本地命令行php-cli:

      * * * * * php /local/root/path/to/tasks.php > /dev/null
      

      它更快并减少您的网络服务器的负载。

      【讨论】:

        【解决方案5】:

        我使用这个命令

        wget -q -O /dev/null "http://example.com/some/cron/job.php" > /dev/null 2>&1
        

        Cron 任务:

        * * * * * wget -q -O /dev/null "http://example.com/some/cron/job.php" > /dev/null 2>&1
        

        【讨论】:

        • 这个需要解释一下,但效果很好。特别是如果像我一样,你的 URL 中有一个 & 符号。将网址放在引号内是一种解决方案。你为什么把 /dev/null 放在 url 之前?
        • 这可能是迟到的回复,但永远不会太迟。原因是:/dev/null 是一个特殊的文件系统对象,它会丢弃写入其中的所有内容。将流重定向到其中意味着隐藏输出。 2>&1 部分表示“重定向输出和错误流”。
        • 好吧,意思是wget的内容被重定向到/dev/null(所以基本被删除忽略了)?谢谢
        • Yes 发送到 /dev/null 的输出被忽略。
        【解决方案6】:

        您可以将其用于带有参数的 url:

        lynx -dump "http://vps-managed.com/tasks.php?code=23456"
        

        lynx 默认在所有系统上都可用。

        【讨论】:

        • -dump 将页面内容转储到文件中。这可能是不受欢迎的副作用。
        【解决方案7】:

        你可以试试这个:-

        wget -q -O - http://www.example.com/ >/dev/null 2>&1

        【讨论】:

          【解决方案8】:

          * * * * * wget --quiet https://example.com/file --output-document=/dev/null

          我发现--quiet-q 更清晰,--output-document=/dev/null-O - > /dev/null 更清晰

          【讨论】:

            【解决方案9】:

            你可以使用这个命令:

            links https://www.honeymovies.com
            

            【讨论】:

              【解决方案10】:

              这是一个简单的例子。你可以像这样使用它

              wget -q -O -http://example.com/backup >/dev/null 2>&1

              在开始时,您可以添加您的选项,例如 (*****)。它取决于您的系统要求,您希望每分钟或几小时运行一次等等。

              【讨论】:

                猜你喜欢
                • 2015-09-27
                • 2015-04-15
                • 2012-07-06
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2016-06-19
                • 2019-04-21
                • 1970-01-01
                相关资源
                最近更新 更多