PHP 最大执行时间错误,即使我从 CLI 运行


PHP Max execution time error even though I'm running from CLI

我正在尝试使用/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);".php。
  • 运行"php -i"以查看"配置文件(php.ini)路径=>/etc/php5/cli"
  • 和"加载的配置文件=>/etc/php5/cli/php.ini"
  • 将 fpm 的 php.ini max_execution_time设置为 61,看看它是否意外使用它。
PHP 的 cli 版本可能

使用不同的 php.ini而不是 PHP 的 Web 服务器版本。

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

set_time_limit(0);

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

这取决于

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