PHP Fatal error: Maximum execution time of 240 seconds exceeded in ...
am 17.09.2008 - 19:06 Uhr in
Es geht darum, mehr als 20000 Nodes per Cronjob über eine XML-Datei zu erzeugen. Ich habe bisher mehrere Varianten durchprobiert, cron.php auszuführen, aber jedes Mal wird das Script nach 240 Sekunden abgebrochen:
Fatal error: Maximum execution time of 240 seconds exceeded in ...
Variante 1
cron.php über den Browser starten: "Cronjob" wird abgebrochen, egal was bei max_execution_time in der php.ini angegeben ist.
Variante 2
Dann habe ich mir gedacht, ich starte cron.php über das Script drupalroot/scripts/drupal.sh per PHP CLI, also: ./scripts/drupal.sh "http://beispielseite.de/cron.php"
Auch hier wird der "Cronjob" wieder nach 240 Sekunden abgebrochen. So weit ich informiert bin, ist bei PHP CLI max_execution_time standardmäßig nicht begrenzt (?), aber der "Cronjob" wird trotzdem abgebrochen.
Variante 3
Die dreckige Variante, cron.php testweise ohne das Script drupal.sh auf der Konsole auszuführen unter der expliziten Angabe einer php.ini php -c /etc/php5/cli -f cron.php
scheitert ebenfalls mit dem gleichen Ergebnis - Cronjob wird nach 240 Sekunden abgebrochen.
Ich frage mich nun - wo kommen diese 240 Sekunden her und wie schaffe ich es, dass dieser "Cronjob" durchläuft?
- Anmelden oder Registrieren um Kommentare zu schreiben
max_execution_time
am 18.09.2008 - 07:08 Uhr
Hallo,
auf welchen Wert hast Du max_execution_time in der php.ini gesetzt? Hast Du danach den Apache evtl. mal neu gestartet, damit er die ini-Datei neu einliest? Blöde Frage, aber manchmal vergisst man sowas ja auch...
Viele Grüße,
www.maximago.de
hast du in der php.ini eine
am 18.09.2008 - 07:57 Uhr
hast du in der php.ini eine zeile: "connection_timeout: 240" ?
_________________________
MFG - bei Fragen, fragen!
Die php.ini passt
am 18.09.2008 - 11:54 Uhr
Die php.ini passt (max_execution_time ist auf 3600), neugestartet hab ich den Apachen auch mehrmals. Ein connection_timeout in der php.ini existiert nicht. Aaaaber:
In der Datei modules/node/node.module in Zeile 2307 steht
set_time_limit(240);
(wozu eigentlich???)Diesen Wert habe ich nun testweise auf 3600 Sekunden hochgeschraubt. Und siehe da, der "Cronjob" wird nicht mehr durch das Timeout abgebrochen - er meckert jetzt nur noch über zu wenig Speicher. memory_limit hochsetzen sollte jetzt hoffentlich helfen. Doch irgendwie beschleicht mich das Gefühl, dass das noch nicht das Ende dieser Episode ist. Es bleibt also spannend ...
Edith sagt: Sieh mal unter http://drupal.org/node/174617 nach. Ist ein Bugreport zu exakt diesem Thema - mit Patch.
____________
Medienquelle.com • Agentur für Corporate Design, Kommunikation und Medien in Hamburg und Bamberg
...naja, 20.000 Nodes sind
am 18.09.2008 - 12:14 Uhr
...naja, 20.000 Nodes sind ja nicht alltäglich.
Ich gehe davon aus, dass in der node.module 240 sec. steht, damit es für jeden Web- 'nicht Server-' Hostingkunden möglich ist, mit minimalem Db-Puffer, Drupal zu nutzen. (is nur ne vermutung)
_________________________
MFG - bei Fragen, fragen!
Ok, jetzt hab ich das
am 18.09.2008 - 12:27 Uhr
Ok, jetzt hab ich das memory_limit in der php.ini mal testweise von 96M auf 512M hochgesetzt. Jetzt gehts wieder los mit
Fatal error: Maximum execution time of 240 seconds exceeded in ...
Brrrr... Es scheint fast so, als wären die 240 Sekunden an mehreren Stellen im Core bzw. in Contributed Modulen hardcoded ... Wir schaun jetz hier mal nach 'ner umfassenderen / eleganteren Lösung des Problems. Einfach die php.ini auf unglaubliche Werte hochzusetzen ist ja auch nicht unbedingt das Gelbe vom Ei.
____________
Medienquelle.com • Agentur für Corporate Design, Kommunikation und Medien in Hamburg und Bamberg
Als Alternative: Verwende
am 18.09.2008 - 12:59 Uhr
Als Alternative:
Verwende die BatchAPI um die XML zu genierieren, hier wird der Prozess einfach in mehrere Abschnitte unterteilt und dann jeweils abgebarbeitet, hier kommt es nicht zu Problemen mit der Execution Time
http://drupal.org/node/180528
// while (true) {watchdog("test", "test"); }
--------------
Blog www.freeblogger.org: Deutscher IRC-Channel: irc.freenode.net #drupal.de ... Jabber-me: dwehner@im.calug.deXING
Das klingt tatsächlich
am 18.09.2008 - 13:20 Uhr
Das klingt tatsächlich recht interessant. Natürlich würde ich dennoch gerne rausfinden, woher
Fatal error: Maximum execution time of 240 seconds exceeded in ...
schon wieder kommt. Laut grep gibts set_time_limit in Verbindung mit 240 nicht mehr in dieser Drupal-Installation.____________
Medienquelle • Agentur für Corporate Design, Kommunikation und Medien in Hamburg