【问题标题】:drupal maximum execution time of crondrupal cron的最大执行时间
【发布时间】:2010-11-13 13:24:36
【问题描述】:

cron 的最大执行时间是多少。如果有任何副作用,是否可以对其进行修改。

【问题讨论】:

    标签: drupal cron execution-time


    【解决方案1】:

    上面接受的答案是错误的。 Drupal 中 Cron 的时间限制被硬编码为 240 秒。请参阅includes/common.inc 中的drupal_cron_run 函数,特别是以下几行:

    drupal_set_time_limit(240);
    

    if (!lock_acquire('cron', 240.0)) {
    

    (基于 Drupal 7.12 的源码)

    因此,如果不入侵核心,就无法在全球范围内改变这一点。我听说有人建议在您的hook_cron 实现中自己调用drupal_set_time_limit,因为这样做会重置PHP 的计数器。但是,当它是实现 hook_cron 的第三方模块时,这对您没有帮助。

    【讨论】:

    • 从 Drupal 8.7 开始,这个数字仍然是 240 秒,但它设置在 web/core/lib/Drupal/Core/Cron.php:Environment::setTimeLimit(240);
    【解决方案2】:

    Drupal cron 的最大执行时间取决于您的 php.ini

    例如,如果您使用wget -O - -q -t 1 @987654321@ 作为您的 cron 命令,则使用 apache 的 php.ini 来确定最大执行时间。

    如果你使用php -f cron.php作为你的cron命令,那么使用php-cli的php.ini来确定最大执行时间。

    建议使用 php-cli 以获得更高的执行时间,您可以从/etc/php5/cli/php.ini 设置最大执行时间(如果您使用的是 debian linux)并且在 cron 运行时对 apache 没有副作用。

    【讨论】:

    • +1,但是在通过 cli 调用 cron 时要注意一点:确保您的模块 hook_cron() 实现不依赖于使用 Web 服务器提供的变量,因为它们显然在那个上下文(花了很长时间才发现一个模块在 cron 调用中使用了$_SERVER['DOCUMENT_ROOT'])。
    【解决方案3】:

    我不知道是否一定是这种情况,因为我刚刚通过浏览器运行cron.php,我得到了 240 秒的max excution time error,而我在 php.ini 中的最大执行时间是1200 秒。所以除了我的 php.ini 文件 Drupal 正在获取最大执行时间。

    某处可能在./includes/common.inc./includes/locale.inc 中。进入那里,有一些设置可以调整drupal允许cron在放弃之前运行多长时间

    【讨论】:

      【解决方案4】:

      这个模块可以帮助你:Set Cron Time

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多