Hallo alle,
ich versuch eine selbst gebaute Backendfunktion, die schon länger in Betrieb ist, per daily cron aufrufen zu lassen.
Während sie als Backend-Modul funktioniert, wird sie im Cron nicht ausgeführt.
Was sagt ihr, wo wäre der beste Debug-Punkt? (Die Contao-Version hier ist 3.5 LTS.)
Setup in Kürze:
PHP-Code:
// system/modules/mymod/config/config.php
$GLOBALS['BE_MOD']['content']['mymod'] = array(
'tables' => array('tl_mymod1','tl_mymod2'),
);
$GLOBALS['BE_MOD']['content']['mymod']['refresh'] = array(
'MyClass',
'refreshTable'
);
$GLOBALS['TL_CRON']['daily'][] = array(
'MyClass',
'refreshTable'
);
// system/modules/mymod/classes/MyClass.php
class MyClass extends System {
...
public function refreshTable(\Contao\DC_Table $dc) {
$this->log('HERE WE GO', __CLASS__.'::'.__FUNCTION__, TL_CRON);
}
...
}
Aus dem Backend kann ich die Funktion über einen (DCA spar ich euch und mir) Button starten.
Sie loggt dann, supi, "HERE WE GO".
Beim Cron-Lauf (bei mir extern, also über Crontab gestartet) macht sie nichts und loggt auch
nichts.
Cron sieht sie und versucht sie auszuführen (ich lasse cron.php loggen, was es vorhat):
PHP-Code:
// system/cron/cron.php
...
// Run the jobs
foreach ($arrIntervals as $strInterval)
{
...
$this->log('Running the ' . $strInterval . ' cron jobs', __METHOD__, TL_CRON);
foreach ($GLOBALS['TL_CRON'][$strInterval] as $callback)
{
// log to see what is actually done / flx 02.2016
$this->log('Cronjob detail: '.$strInterval.','.$callback[0].','.$callback[1],__METHOD__, TL_CRON);
$this->import($callback[0]);
$this->$callback[0]->$callback[1]();
}
$this->log(ucfirst($strInterval) . ' cron jobs complete', __METHOD__, TL_CRON);
...
}
callback[0..1] werden aufgerufen, aber das Ende der Schleife (Log: "cron jobs complete") wird nie erreicht.
(vgl. Contao-Log)
PHP-Code:
[2016-02-11 23:45] Cronjob detail: daily,MyClass,refreshTable Löschen Anzeigen
[2016-02-11 23:45] Checked for Contao updates Löschen Anzeigen
[2016-02-11 23:45] Cronjob detail: daily,Automator,checkForUpdates Löschen Anzeigen
[2016-02-11 23:45] Purged the temp folder Löschen Anzeigen
[2016-02-11 23:45] Cronjob detail: daily,Automator,purgeTempFolder Löschen Anzeigen
[2016-02-11 23:45] Cronjob detail: daily,Automator,rotateLogs Löschen Anzeigen
[2016-02-11 23:45] Running the daily cron jobs
Könnt ihr mir helfen? Wo soll ich den Fehler suchen? Der Logbefehl steht ganz am Anfang von refreshTable, wird
aber nie erreicht. Ich seh nix
Danke & Grüße
flx.
Lesezeichen