Magento Reindedex aus der Befehlszeile, die immer noch Zeitleitungsfehler hat
-
16-10-2019 - |
Frage
Ich versuche, meine Tabelle catalog_url_rewrite (Magento -Website) über die Befehlszeile zu neu zu rücken, indem ich den Befehl "PHP Indexer.php -Reindex Catalog_url" in /Shell. Ich bekomme den folgenden Fehler:
PHP Fatal error: Maximum execution time of 60 seconds exceeded in /var/www/domain.com/lib/Zend/Db/Statement.php on line 141
Die Datei und Zeile des Fehlers variieren.
Ich habe doppelt überprüft, um zu bestätigen, dass PHP in der Befehlszeile tatsächlich die PHP -CLI -Version verwendet (unter Verwendung von "PHP -i") und dass in seiner Konfiguration keine Grenzen enthalten, die einen solchen Fehler ergeben sollten.
Ich habe mich auch umgesehen, ob eine Magento -Datei die "set_time_limit" manuell festgelegt hat, konnte aber nichts finden, was auf diese Weise zeigt. Ich kann die 60 Sekunden max_execution_time nirgendwo finden.
Irgendeine Idee, was los ist?
Bearbeiten:
Bisher habe ich versucht:
- Ausführen "php -d max_execution_time = 0 indexer.php --reindex catalog_url"
- Einstellung "set_time_limit (9000);" auf Indexer.php direkt.
- Ausführen von "Php -i", um "Konfigurationsdatei (php.ini) path =>/etc/php5/cli" & "geladene Konfigurationsdatei => /etc/php5/cli/php.ini geladen" anzuzeigen.
- Einstellen von max_execution_time auf fpms php.ini auf 61, um zu sehen, ob es versehentlich verwendet wurde.
- Stellen Sie sicher, dass "set_time_limit (60)" nirgendwo im Magento -Framework festcodiert ist.
Lösung
Ich bin darauf getroffen. Das Problem ist, dass sich Shell -Skripte erstrecken Mage_Shell_Abstract
Verhalten, das PHP INI -Einstellungen anwendet, analysiert von Magento's .htaccess
Datei.
Schauen Sie sich die Methode an protected function _applyPhpVariables()
in shell/abstract.php
.
Die einfachste Lösung ist nur zu bearbeiten .htaccess
und kommentieren Sie die php_value
Richtlinien für execution_time
und oder memory_limit
. Alternativ können Sie den Indexer erweitern, indem Sie das überschreiben applyPhpVariables()
Methode und stoppen es die Verarbeitung der Verarbeitung der .htaccess
.
Ich habe große Spenden an mein Schimpfglas gemacht, als ich diese "Funktion" zum ersten Mal entdeckte.
Andere Tipps
Versuchen Sie, dies aus der Wurzel der Magento -Installation auszuführen:
php -d max_execution_time=0 ./shell/indexer.php --reindex catalog_url
Wenn dieser Befehl mit demselben Fehler fehlschlägt, ist etwas Verrücktes vor sich. :)
Eine Sache, die darauf hinweist, ist, dass Magento -Shell -Befehle die HTAccess -Datei analysieren und Einstellungen (wie z. B. Zeitlimit) anwenden, die sie findet. Ich würde Ihre HTaccess -Datei überprüfen.
Sehen Sie diesen Beitrag, den ich vor einiger Zeit geschrieben habe:http://edmondscommerce.github.io/magento/magento-shell-scripts-and-memory-limit-woes-solution.html