Ergebnis 1 bis 20 von 20

Thema: Cronjob anlegen, wie?

  1. #1
    Contao-Nutzer
    Registriert seit
    08.12.2009.
    Beiträge
    190

    Standard Cronjob anlegen, wie?

    Hi
    Also Typolight hat ja eine cron.php die mehr oder weniger regelmäßig aufgerufen wird. Nur ich finde keine Infos wie ich dort eine Funktion einbinde.
    Wie erreiche ich den AUfruf eines eigenen Php Scriptes bzw. Funktion. Ich nehme doch nicht an das ich dir cron.php direkt ändern muss, oder? Ich will auch nicht extra einen Scheduler Modul installieren, es muss doch einfachere Möglichkeit geben?
    Typolight Extension "Downloadartikel (Paypal)" - Hersteller

  2. #2
    Administrator Avatar von xchs
    Registriert seit
    19.06.2009.
    Beiträge
    14.557
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo,

    im Prinzip hast Du zwei Möglichkeiten:
    • entweder die Erweiterung "cron" verwenden (was Du aber nicht möchtest) oder
    • am Webserver einen richtigen Cronjob einrichten, sofern Dein Hoster das anbietet
    Contao Community Administrator

    [Unterstützungsmöglichkeiten]

  3. #3
    Contao-Nutzer
    Registriert seit
    08.12.2009.
    Beiträge
    190

    Standard

    Du verstehst mich falsch. Ich will schon die cron.php in Typolight nutzen. Ich weiss nur nicht wie ich in php dort eine Funktion reinhänge ohne die Datei zu ändern. Wie hänge ich quasi eine callback Funktion rein?
    Typolight Extension "Downloadartikel (Paypal)" - Hersteller

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

    Standard

    Du schreibst ein Modul was in der config sich einträgt in den Zeitpunkt, z.b.:
    PHP-Code:
    $GLOBALS['TL_CRON']['weekly'][] = array('AutomatorGT''purgeHtmlFolderGT');
    oder
    $GLOBALS
    ['TL_CRON']['daily'][]  = array('AutomatorGT''purgeHtmlFolderGT'); 
    Parameter sind class,methode

    Beispiel mein Modul graphicalautomator
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  5. #5
    Contao-Nutzer
    Registriert seit
    08.12.2009.
    Beiträge
    190

    Standard

    Ah sooo, genau das wollte ich wissen, danke! Ich glaub stündlich ging auch wenn ich mich nicht täusche.
    Typolight Extension "Downloadartikel (Paypal)" - Hersteller

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

    Standard

    Ja, wäre dann
    PHP-Code:
    $GLOBALS['TL_CRON']['hourly'][] .... 
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  7. #7
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Funktioniert aber natürlich nur, wenn auch schön brav jede Stunde jemand deine Seite besucht
    Nur nochmal zur Ergänzung, falls jemand den Thread per Suche findet
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  8. #8
    Contao-Nutzer
    Registriert seit
    08.12.2009.
    Beiträge
    190

    Standard

    Zitat Zitat von Toflar Beitrag anzeigen
    Funktioniert aber natürlich nur, wenn auch schön brav jede Stunde jemand deine Seite besucht
    Nur nochmal zur Ergänzung, falls jemand den Thread per Suche findet
    Ja schon klar das das kein echter Cron ist, aber reicht für die meisten Aufgaben!
    Typolight Extension "Downloadartikel (Paypal)" - Hersteller

  9. #9
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Jau, wie gesagt - war nur zur Ergänzung gedacht
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

  10. #10
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.140

    Standard

    Hey,

    bräuchte das auch grad Mal.

    Aber irgendwie passiert das nichts: In der Log steht zwar das die minütlichen Cronjobs ausgeführt sind aber nicht der Log von der checkDates

    config.php
    PHP-Code:
    /* Cron jobs */
    $GLOBALS['TL_CRON'] = array
    (
        
    'minutely' => array
        (
            array(
    'CronDates''checkDates'),
        )
    ); 
    CronDates.php
    namespace Contao;
    PHP-Code:
    class CronDate extends \System {

        public function 
    checkDates() {
        
            
    $db = \Database::getInstance();
            
    $table "tl_table";
            
    $today time();
            
            
    $objDates $db->execute("SELECT id,dateBeg,dateEnd,dateDaily FROM $table WHERE dateBeg <= '".$today."'");
            while(
    $objDates->next()) {
                if(
    $objDates->dateDaily == 0){
                    if(
    $objDates->dateBeg <= $today){
                        
    $db->execute("DELETE FROM $table WHERE id = '".$objDates->id."'");
                    }
                }
                if(
    $objDates->dateDaily == 1){
                    if(
    $objDates->dateEnd <= $today){
                        
    $db->execute("DELETE FROM $table WHERE id = '".$objDates->id."'");
                    }
                }
            }
            
    $this->log('Traveldates clear'__METHOD__TL_CRON);        
        }    


  11. #11
    Contao-Urgestein Avatar von cliffparnitzky
    Registriert seit
    08.10.2010.
    Ort
    Lüneburg
    Beiträge
    2.451
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Moin,

    da fehlt die Angabe einer vernünftigen Tabelle:

    PHP-Code:
    $table "tl_table"
    Oder hast du deine Daten in der Tabelle 'tl_table' gespeichert?

    Gruß, Cliff

  12. #12
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.140

    Standard

    Zitat Zitat von cliffen Beitrag anzeigen
    Moin,

    da fehlt die Angabe einer vernünftigen Tabelle:

    PHP-Code:
    $table "tl_table"
    Oder hast du deine Daten in der Tabelle 'tl_table' gespeichert?

    Gruß, Cliff
    Das ist nur hier als Beispiel Hab da schon die richtige Tabelle drin

  13. #13
    Contao-Nutzer
    Registriert seit
    30.12.2010.
    Beiträge
    210

    Standard

    In der Config steht CronDates, die Klasse heißt aber CronDate. Oder ist das auch nur fürs Beispiel?
    Gruß CeeKay

  14. #14
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.140

    Standard

    Zitat Zitat von CeeKay Beitrag anzeigen
    In der Config steht CronDates, die Klasse heißt aber CronDate. Oder ist das auch nur fürs Beispiel?
    Haha stimmt, oh mann danke

    LG

  15. #15
    Contao-Nutzer
    Registriert seit
    18.12.2010.
    Ort
    Mühltal
    Beiträge
    42

    Standard Ich krieg den cron Aufruf einfach nicht hin

    Hallo zusammen,

    ich weiß nicht was ich falsch mache. Den cron Aufruf bekomme ich einfach nicht hin.
    (contao 3.2.7)
    Folgendes habe ich geschrieben:
    config.php
    Code:
    $GLOBALS['TL_CRON']['minutely'][]   = array('Refresh', 'refreshAges');
    Refresh.php
    Code:
    namespace Diversworld;
    
    /**
     * Class Refresh
     *
     * Refreshes the Ages of Members
     * @copyright  Eckhard Becker 2010-2014
     * @author     Eckhard Becker <http://diversworld.eu>
     * @package    dw_duc_dtaus
     */
    class Refresh extends \Backend
    {
        /**
         * Refreshes the Ages of Members.
         */
        public function refreshAges()
        {
            $this->log('Start Refresh the Ages', __METHOD__, TL_CRON);
            // Aktuelles Datum holen
            $varToday	= date("Ymd");
    
            $db = \Database::getInstance();
    
            $this->log('RefreshAges: Start refresching Ages. dwRefreshAges refreshAges()', __METHOD__, TL_CRON);
    
            $objData = $db->execute("SELECT dateOfBirth, firstname, lastname, xt_age FROM tl_member WHERE disable=''");
    
            if($objData->numRows < 1)
            {
                return;
            }
    
            while($objData->next())
            {
                $varAge = floor(($varToday - date("Ymd", $objData->dateOfBirth)) / 10000);
    
                $this->log('RefreshAges: Age refreshed. ' . $objData->firstname .' ' . $objData->lastname. ' Alter ' . $varAge, __METHOD__, TL_CRON);
    
            }
    
            return;
        }
    }
    in der autoload.php ist die Datei Refresh.php auch eingetragen.

    Refresh.php wird einfach nicht von cron.php aufgerufen. :-(

  16. #16
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Wie sieht die autoload.php aus? Und musst du nicht eigentlich Diversworld\Refresh angeben?

  17. #17
    Contao-Nutzer
    Registriert seit
    18.12.2010.
    Ort
    Mühltal
    Beiträge
    42

    Standard

    In der autoload.php steht

    Code:
    /**
     * Register the namespaces
     */
    
    ClassLoader::addNamespaces(array
    (
    	'Diversworld',
    ));
    
    
    /**
     * Register the classes
     */
    ClassLoader::addClasses(array
    (
    	// Classes
    	'dw_Buchungen'        => 'system/modules/dw_duc_dtaus/classes/dw_Buchungen.php',
    	'dwDucAbrechnung'     => 'system/modules/dw_duc_dtaus/classes/dwDucAbrechnung.php',
    	'dwDucMeldung'        => 'system/modules/dw_duc_dtaus/classes/dwDucMeldung.php',
    	'Diversworld\Refresh' => 'system/modules/dw_duc_dtaus/classes/Refresh.php',
    ));
    Ich habe es mit und ohne Namespace versucht. beides ohne Erfolg.

  18. #18
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.114
    Partner-ID
    10107

    Standard

    Hm, finde sonst keinen Fehler. Und
    PHP-Code:
    $GLOBALS['TL_CRON']['minutely'][] = array('Diversworld\Refresh''refreshAges'); 
    sollte so richtig sein.

  19. #19
    Contao-Nutzer
    Registriert seit
    18.12.2010.
    Ort
    Mühltal
    Beiträge
    42

    Gesicht zeigt die Zunge

    Hm, trotzdem wird die Funktion nicht ausgeführt. Zumindes wird kein Eintrag im Log vorgenommen, wie es ind er Funktion angegeben ist.

  20. #20
    Contao-Nutzer
    Registriert seit
    18.12.2010.
    Ort
    Mühltal
    Beiträge
    42

    Computer Geschafft

    Die Funktion wurde nicht ausgeführt weil im cache noch ein verweis auf einen anderen Dateinamen eingetragen war. Ich hatte den Cache zwar schon einmal gelöscht es hatte danach nicht funktioniert. Der Grund war, dass ich nicht komplett gelöscht hatte.
    Ich habe jetzt in der Systemwartung alles löschen lassen und nun wird die Funktion korrekt aufgerufen.

    Wenn man es richtig macht funktioniert es gleich ;-)

Aktive Benutzer

Aktive Benutzer

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

Ähnliche Themen

  1. CronJob mit redirect?
    Von raveolution im Forum Entwickler-Fragen
    Antworten: 8
    Letzter Beitrag: 09.08.2010, 07:11
  2. Cronjob funktioniert nicht
    Von Dani im Forum Entwickler-Fragen
    Antworten: 8
    Letzter Beitrag: 19.07.2010, 15:59
  3. cronjob geht nicht
    Von juergen.vallant im Forum Entwickler-Fragen
    Antworten: 11
    Letzter Beitrag: 26.01.2010, 10:10
  4. Cronjob
    Von ricola im Forum Sonstiges zu Contao
    Antworten: 7
    Letzter Beitrag: 25.08.2009, 17:19
  5. CronJob will einfach nicht
    Von Toflar im Forum Entwickler-Fragen
    Antworten: 2
    Letzter Beitrag: 08.08.2009, 16:03

Lesezeichen

Lesezeichen

Berechtigungen

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