【问题标题】:PHP Max execution time error even though I'm running from CLI即使我从 CLI 运行,PHP Max 执行时间错误
【发布时间】:2013-11-08 10:36:18
【问题描述】:

我正在尝试使用 /shell 中的命令“php indexer.php --reindex catalog_url”通过命令行重新索引我的 catalog_url_rewrite 表(Magento 网站)。我收到以下错误:

PHP Fatal error:  Maximum execution time of 60 seconds exceeded in /var/www/domain.com/lib/Zend/Db/Statement.php on line 141

错误上的文件和行不同。

我已经仔细检查以确认命令行中的 php 确实使用了 php-cli 版本(通过使用“php -i”),并且其配置中没有任何限制会产生这样的错误。

我还环顾四周,看看是否有任何 magento 文件手动设置了“set_time_limit”,但找不到任何指向该方向的东西。我在任何地方都找不到 60 秒 max_execution_time。

知道发生了什么吗?

编辑:

到目前为止我已经尝试过:

  • 运行“php -d max_execution_time=0 indexer.php --reindex catalog_url”
  • 设置“set_time_limit(9000);”直接在 indexer.php 上。
  • 运行“php -i”查看“配置文件 (php.ini) 路径 => /etc/php5/cli”和“加载的配置文件 => /etc/php5/cli/php.ini”
  • 将 fpm 的 php.ini 上的 max_execution_time 设置为 61 只是为了查看它是否意外使用它。

【问题讨论】:

    标签: magento nginx php


    【解决方案1】:

    可能是 cli 版本的 PHP 使用了不同的 php.ini,而不是 PHP 的 Web 服务器版本。

    您可以通过添加此行来删除脚本执行时间限制(在<?phpindexer.php 之后)

    set_time_limit(0);
    

    源:http://php.net/manual/en/function.set-time-limit.php

    【讨论】:

    • 当您使用它时,将内存限制设置为indexer.php(因为 magento 非常消耗资源),如下所示:ini_set('memory_limit','64M');(增加值以满足您的需要)
    • 我已经有“set_time_limit(9000);”那里,但它似乎忽略了它。关于内存限制,它设置为 512M,所以我认为这不是问题,但感谢您的提示。
    【解决方案2】:

    这取决于您的 Web 服务器安装(Apache2 PHP、FPM ...),但您可能会为 CLI 执行找到不同的 php.ini。只需在 cli/php.ini 配置文件中设置时间限制,然后重新加载 Web 服务器配置即可。

    【讨论】:

    • 它是 php-fpm,我已经检查了命令行中的 phpinfo,以确保它使用了它应该使用的配置,并且看起来是这样:配置文件 (php.ini) 路径=> /etc/php5/cli 加载配置文件 => /etc/php5/cli/php.ini
    • 您是否尝试过使用 -d 选项通过 CLI 调用 PHP 时指定最大执行时间? php -d max_execution_time=0 script.php
    • 不,我现在正在运行另一个测试,但我会马上尝试。
    • 好的,我已经这样运行了,但仍然是同样的错误:PHP 致命错误:超过 60 秒的最大执行时间
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多