Magento переиндексирует из командной строки, по-прежнему возникает ошибка тайм-аута
-
16-10-2019 - |
Вопрос
Я пытаюсь переиндексировать мою таблицу catalog_url_rewrite (веб-сайт Magento) через командную строку, используя команду "php indexer.php --переиндексировать catalog_url" в /shell.Я получаю следующую ошибку:
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 --переиндексировать catalog_url"
- Установка "set_time_limit(9000);" на indexer.php напрямую.
- Запускаем "php -i", чтобы увидеть "Путь к файлу конфигурации (php.ini) => /etc/ php5/ cli" и "Загруженный файл конфигурации => /etc/ php5/cli/php.ini"
- Устанавливаем max_execution_time в php.ini fpm равным 61, просто чтобы посмотреть, не использовал ли он его случайно.
- Убедился, что "set_time_limit(60)" нигде жестко не задано в среде magento.
Решение
Я уже сталкивался с этим.Проблема в том, что сценарии оболочки расширяются Mage_Shell_Abstract
наследует поведение, применяющее настройки PHP ini, проанализированные из Magento .htaccess
файл.
Взгляните на этот метод protected function _applyPhpVariables()
в shell/abstract.php
.
Самое простое решение - это просто отредактировать .htaccess
и прокомментируйте php_value
директивы для execution_time
и или memory_limit
.В качестве альтернативы вы можете расширить индексатор, переопределив applyPhpVariables()
метод и остановить его обработку .htaccess
.
Я сделал значительные пожертвования в свой swear jar, когда впервые обнаружил эту "функцию".
Другие советы
Попробуйте запустить это из корневого каталога установки Magento:
php -d max_execution_time=0 ./shell/indexer.php --reindex catalog_url
Если эта команда завершается с той же ошибкой, значит, происходит что-то сумасшедшее.:)
Следует отметить, что команды оболочки Magento анализируют файл htaccess и применяют найденные настройки (например, ограничение по времени).Я бы проверил ваш файл htaccess.
Смотрите этот пост, который я написал некоторое время назад:http://edmondscommerce.github.io/magento/magento-shell-scripts-and-memory-limit-woes-solution.html