Projekt

Allgemein

Profil

GX-Bug #61685

Von Daniel Wu vor etwa 5 Jahren aktualisiert

Ist: 
 Aktuell führen PHP-Warnungen bei der Ausführung von Cronjobs zum Abbruch. Dadurch werden einzelne Jobs wie z. B. die Sitemap-Generierung in der Übersicht für "Zeitgesteuerte Aufgaben" als fehlgeschlagen markiert (rot hinterlegt). 

 Soll: 
 Bei PHP-Warnungen soll die Ausführung des Cronjobs nicht abbrechen, so dass Jobs wie die Sitemap-Generierung wieder erfolgreich durchlaufen. 

 Vorbedingungen: 
 - Der Shop muss unter PHP7.2 laufen. 
 - Um eine Beispiel-Warnung zu erzeugen: Mindestens ein Artikel sollte eine Kundenrezension haben. 

 Step-by-Step: 
 - Gambio Admin: Toolbox > Zeitgesteuerte Aufgaben > "Export der Sitemap XML" aktivieren 
 - Cronjob-URL kopieren und in einem eigenen Browser-Tab ausführen 
 - Anschließend ist der Cronjob als fehlgeschlagen (rot hinterlegt) markiert abbrechen. 

 Das Problem ist bei einem Kunden unter PHP7.2 aufgetreten. Ab dieser PHP-Version ist die Verwendung undefinierter Konstanten als "deprecated" markiert, was zu einer Warnung führt. Aktuell haben wir einen solchen Fall bei 5-Sterne-Bewertungen bei Produkten. Bei der Sitemapgenerierung über den Cronjob, wird die entsprechende Seite besucht und die Warnung tritt auf. Das Problem ist, dass die Ausführung des Cronjobs in einer Closure passiert, womit der der Error Logger aktuell nicht klar kommt. Der Logger versucht mithilfe der ReflectionClass herauszufinden, wo der Fehler geworfen wird und versteht nicht, dass dies bei einer Closure nicht so einfach möglich ist. Das bedeutet, dass der Grund für den Abbruch der Cronjob-Ausführung der Logger selbst ist. 

 Lösungsvorschlag: 
 Der Logger sollte zu Closures einfach keine weiteren Informationen loggen. In LogEvent::init_function_data() sollte dazu abgefragt werden, ob $t_call['function'] nicht '{closure}' ist.

Zurück