Projekt

Allgemein

Profil

Aktionen

GX-Bug #61685

geschlossen

Der Error Logger erzeugt Fehler, wenn während der Cronjob-Ausführung PHP-Warnungen auftreten

Von Daniel Wu vor etwa 5 Jahren hinzugefügt. Vor mehr als 2 Jahren aktualisiert.

Status:
Abgewiesen
Priorität:
Normal
Zugewiesen an:
-
Kategorie:
Core
Zielversion:
-
% erledigt:

0%

Geschätzter Aufwand:
Steps to reproduce:
Betroffene Versionen:
Unbestimmt
Release Notes Langtext:

Beschreibung

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

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.


Aktionen #1

Von Daniel Wu vor etwa 5 Jahren aktualisiert

  • Beschreibung aktualisiert (Vergleich)
  • Zielversion wurde auf 133 gesetzt
Aktionen #2

Von Moritz Bunjes vor mehr als 2 Jahren aktualisiert

  • Zielversion 133 wurde gelöscht
Aktionen #3

Von Nina Bischoff vor mehr als 2 Jahren aktualisiert

  • Zugewiesen an wurde auf Nina Bischoff gesetzt
Aktionen #4

Von Nina Bischoff vor mehr als 2 Jahren aktualisiert

  • Zugewiesen an Nina Bischoff wurde gelöscht
Aktionen #5

Von Nina Bischoff vor mehr als 2 Jahren aktualisiert

  • Status wurde von Gemeldet zu Abgewiesen geändert
Aktionen

Auch abrufbar als: Atom PDF