Ergebnis 1 bis 7 von 7

Thema: Ereignis per Contao-Cron triggern

  1. #1
    Contao-Nutzer Avatar von TLight
    Registriert seit
    30.06.2009.
    Ort
    bei München
    Beiträge
    168

    Standard Ereignis per Contao-Cron triggern

    Hallo!

    Contao besitzt ja seit einiger Zeit einen eigenen "Cron". Nach einigen (erfolglosen) Versuchen mit der Scheduler-Erweiterung ist mir nun gekommen, dass ich das Ereignis möglicherweise auch mit dem contao-eigenen Cron triggern könnte. Doch leider habe ich nirgends gefunden, wie man diesen einbaut. Zurzeit wird das Ereignis über einen Knopf im Backend ausgelöst.

    In der DCA steht:
    PHP-Code:
    'global_operations' => array 
            ( 
                
    'all' => array 
                ( 
                    
    'label'               => "Lehrerdatenbank aktualisieren..."
                    
    'href'                => '&key=update'
                    
    'class'               => 'header_edit_all'
                ) 
    Und in einer Sync.php:
    PHP-Code:
    class LSync extends Frontend
    {
        function 
    __construct()
        {
            
    parent::__construct();
        }

        public function 
    synchronize($objUser=null)
        {
            if(
    $this->Input->get('key') != 'update')
            {    
                return 
    'Sorry, wrong &key!';
            }
            
    $returnheader=
            
    '<div id="tl_buttons">
                <a href="'
    .ampersand(str_replace('&key=update'.$this->Input->get('id'), '' $this->Environment->request)).'" 
                 class="header_back" 
                 title="'
    .specialchars($GLOBALS['TL_LANG']['MSC']['backBT']).'">'.$GLOBALS['TL_LANG']['MSC']['backBT'].'
                 </a>
            </div>'
    ;
    ... 
    Hätte jemand einen Tipp für mich, wie ich das o. g. Ereignis stündlich auslösen kann?

    Vielen Dank schon jetzt für Eure Antwort!

  2. #2
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.613
    Partner-ID
    1081
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo TLight,

    dazu musst Du Deine Routine über Deine Modul-config registrieren:

    $GLOBALS['TL_CRON']['daily'][] = array('MeineKlasse', 'MeineFunction');

    Es gibt den Cron auch monthly, weekly, hourly und minutely.
    Aber immer bedenken, dass das kein echter Cron ist, er wird nur aktiv, wenn die Seiten aufgebaut werden, ein exaktes Zeitraster ist nur mit einem echten Cronjob machbar.
    z.B. www.cronjobservice.net

  3. #3
    Contao-Nutzer Avatar von TLight
    Registriert seit
    30.06.2009.
    Ort
    bei München
    Beiträge
    168

    Standard

    Hallo do_while!

    Vielen Dank für die schnelle antwort. Ich habe in die config.php meiner Erweiterung nun folgende Zeile eingefügt:

    PHP-Code:
    $GLOBALS['TL_CRON']['hourly'][] = array('Sync''synchronize'); 
    Im Log wird mir das Auslösen des hourly CronJobs bestätigt. Leider bleibt aber die Synchronisierung, wie ich sie per Knopfdruck erreiche, aus. Setze ich falsche Werte ein?

    Nochmals vielen Dank schon im Voraus für die Mühen!!

  4. #4
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    Die Klasse bei dir nennt sich doch LSync? Dann muss das auch so in der config.php rein.
    Und die Datei und der Klassenname sollten identisch sein, zumindest in Contao 2.

    Außerdem, der Frontend Cron von Contao wird per JavaScript ausgelöst, es bringt nichts dort html Quelltext zu generieren, der wird eh nicht ausgegeben.
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  5. #5
    Contao-Nutzer Avatar von TLight
    Registriert seit
    30.06.2009.
    Ort
    bei München
    Beiträge
    168

    Standard

    Danke, BugBuster, für die schnelle Antwort!

    Ich habe zwei Sync-Jobs. Dummerweise habe ich hier den Cron-Aufruf für den zweiten Job geschrieben. In beiden config.php müsste also eigentlich die Klasse richtig sein. Doch leider tut sich nichts.

    Die html-Ausgabe ist für das BE - als Kontrolle, wenn man den Knopf drückt, ob auch wirklich alles so, wie gewünscht, übertragen wurde. Es ist gut, wenn das beim Cron nicht angezeigt wird. Doch leider passiert ja gar nichts... :-(

    Ich nutze Contao 3.1.x. Bei einem der beiden Jobs heißt die Datei, wie die Funktion, beim anderen nicht. In beiden Fällen wird die Synchronisation jedoch leider nicht ausgeführt.

    Woran könnte das liegen?

  6. #6
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.513
    User beschenken
    Wunschliste

    Standard

    Hast du die autoload.php generiert?
    Fehlermeldungen eingeschaltet?
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  7. #7
    Contao-Nutzer Avatar von TLight
    Registriert seit
    30.06.2009.
    Ort
    bei München
    Beiträge
    168

    Standard

    Hallo BugBuster!

    2x ja. Die autoload.php ist generiert, Fehler werden keine angezeigt. :-S

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •