
Zitat von
Spooky
Hast du Einträge in var/logs/? Oder Einträge im PHP Error Log? Was genau macht denn diese getNegativ() Funktion und wie lange dauert die?
Ich habe Nenngeld.php modifiziert in der Entwicklungsumgebung:
PHP-Code:
\System::getContainer()->get('monolog.logger.contao.cron')->info('[Fernschach-Wartung] Zeitmessung startet');
$time_start = microtime(true);
$ergebnis = \Schachbulle\ContaoFernschachBundle\Classes\Konto\Nenngeld::getNegativ();
$time_end = microtime(true);
$time = $time_end - $time_start;
\System::getContainer()->get('monolog.logger.contao.cron')->info('[Fernschach-Wartung] Dauer getNegativ in Sekunden: '.$time);
Beim Start via console contao-cron kommen keine Fehlermeldungen. Nenngeld wird aber trotzdem nur unvollständig abgearbeitet. Das "Zeitmessung startet" habe ich meistens im System-Log drin, die Ausgabe der Laufzeit (ca. 0,12 sec) kommt seltener. Der Cronjob verreckt also meistens innerhalb der Funktion getNegativ, die mehrere Tausend Datensätze prüft. Wenn die Ausgabe der Laufzeit im System-Log ist, läuft der Rest des Codes auch normal durch und erreicht auch die letzte Codezeile, die was ins System-Log schreibt.
Unter var/logs tauchen nach unvollständigen Requests folgende Zeilen auf:
Code:
app.ERROR: ErrorException: Warning: Attempt to read property "server" on null in /vendor/contao/core-bundle/src/Resources/contao/classes/Versions.php:796 Stack trace: #0 /vendor/contao/core-bundle/src/Resources/contao/classes/Versions.php(222): Contao\Versions->getEditUrl() #1 /vendor/schachbulle/contao-fernschach-bundle/src/Cron/Mitgliederpruefung.php(84): Contao\Versions->create() #2 /vendor/contao/core-bundle/src/Cron/CronJob.php(44): Schachbulle\ContaoFernschachBundle\Cron\Mitgliederpruefung->onMinutely() #3 /vendor/contao/core-bundle/src/Cron/Cron.php(136): Contao\CoreBundle\Cron\CronJob->__invoke() #4 /vendor/contao/core-bundle/src/EventListener/CommandSchedulerListener.php(47): Contao\CoreBundle\Cron\Cron->run() #5 /vendor/symfony/event-dispatcher/Debug/WrappedListener.php(118): Contao\CoreBundle\EventListener\CommandSchedulerListener->__invoke() #6 /vendor/symfony/event-dispatcher/EventDispatcher.php(230): Symfony\Component\EventDispatcher\Debug\WrappedListener->__invoke() #7 /vendor/symfony/event-dispatcher/EventDispatcher.php(59): Symfony\Component\EventDispatcher\EventDispatcher->callListeners() #8 /vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php(154): Symfony\Component\EventDispatcher\EventDispatcher->dispatch() #9 /vendor/symfony/http-kernel/HttpKernel.php(97): Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher->dispatch() #10 /vendor/symfony/http-kernel/Kernel.php(159): Symfony\Component\HttpKernel\HttpKernel->terminate() #11 /web/index.php(48): Symfony\Component\HttpKernel\Kernel->terminate() #12 {main} [] []
request.CRITICAL: Uncaught PHP Exception ErrorException: "Warning: Attempt to read property "server" on null" at /vendor/contao/core-bundle/src/Resources/contao/classes/Versions.php line 796 {"exception":"[object] (ErrorException(code: 0): Warning: Attempt to read property \"server\" on null at /vendor/contao/core-bundle/src/Resources/contao/classes/Versions.php:796)"} []
Ergänzung: Wenn ich den Code nicht über Contao-Cron abarbeiten lasse, sondern z.B. bei einem Aufruf im Backend (im DCA über einen onload_callback) läuft alles immer sauber durch.