【问题标题】:How do you get a Cronjob executing a PHP script to run longer than 30 seconds?如何让执行 PHP 脚本的 Cronjob 运行时间超过 30 秒?
【发布时间】:2009-11-07 17:49:27
【问题描述】:

如何将其重写为每天运行超过 30 秒的 cron?另外,我是否需要编辑cron.php 目录中的.htaccessphp.ini 文件才能说些什么?在浏览器上,它可以正常运行超过 30 秒;在外壳上,它也运行得很好。但是作为一个 cron set 任务,它会在 30 秒后死亡。我正在使用 1and1 共​​享主机。

0 12 * * * php5 /this/is/the/file/cron.php

【问题讨论】:

    标签: php cron shared-hosting


    【解决方案1】:

    有几件事可能会终止您的脚本。一种可能是在 php.ini 文件中设置的最大执行时间。如果是这种情况,您可以在脚本中使用set_time_limit(0); 覆盖它,其中零表示没有限制,任何大于零的数字都是允许脚本在终止之前运行的秒数。需要注意的是,这个时间不包括浏览器发出请求所花费的时间,所以这里不计算文件上传时间。

    如果您在共享托管环境(如 Dreamhost)中,他们有进程监视,可以在设定的时间限制后终止任何 PHP 进程。你无法绕过这些。您需要联系托管服务提供商以了解您需要做什么才能更长时间地运行脚本(对于 Dreamhost,他们希望您拥有他们的 PS 产品)。

    【讨论】:

      【解决方案2】:

      使用此语法启动 php:

      php -c /path/to/another/php.ini /this/is/the/file/cron.php
      

      然后您可以在不同的php.ini 文件中指定不同的超时(或不超时)。

      【讨论】:

        【解决方案3】:
        ini_set('max_execution_time', 600);
        

        将此添加到您的 php 文件的顶部,它将运行 600 秒。不推荐其他任何东西,但如果您愿意,可以尝试一下。

        【讨论】:

          【解决方案4】:

          如果您使用 PHP CLI,则无需设置更高的 max_execution_time:

          “max_execution_time”的 CLI SAPI 默认值设置为无限制。

          http://nl3.php.net/manual/en/features.commandline.differences.php

          【讨论】:

            【解决方案5】:

            我只会使用wget http://path.to.myscript.php

            如果它在 30 后死亡,您可能需要在您的 php.ini 中设置 max_execution_time = 60 以允许脚本运行超过 30 秒。

            【讨论】:

              【解决方案6】:

              你也可以使用ini_set('max_execution_time', 60)

              但正如手册页所说,在某些情况下(即在安全模式下运行)这根本没有效果:http://uk.php.net/manual/en/info.configuration.php#ini.max-execution-time

              也可能客户端行的 php.ini 具有与浏览器不同的最大执行值。我有时也看到过。

              【讨论】:

                猜你喜欢
                • 2011-05-02
                • 2013-04-01
                • 1970-01-01
                • 2011-09-24
                • 2019-04-07
                • 2018-08-01
                • 2014-01-20
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多