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 ![Unzufrieden](images/smilies/frown.png)
Danke & Grüße
flx.
Lesezeichen