Contao-Camp 2024
Ergebnis 1 bis 13 von 13

Thema: Ordner automatisch synchronisieren

  1. #1
    Contao-Nutzer
    Registriert seit
    27.04.2010.
    Ort
    Hannover
    Beiträge
    41

    Standard Ordner automatisch synchronisieren

    Hi

    Ich habe hier einen Build-Server, der eine Software jede Nacht um 7 Uhr mit dem dann aktuellen Quellcode-Stand compiliert ("Nightlies"). Gegen 9 Uhr ist der Vorgang abgeschlossen. Die fertigen Builds würde ich nun gerne zum Download anbieten. Der Build-Server kann seine Daten auch per FTP in die Ordnerstruktur von Contao hochladen. Das klappt so weit, jeden Tag gegen 9 Uhr taucht so eine neue Datei in der Verzeichnisstruktur auf und wird dementsprechend im Backend auch angezeigt - nur muss ich jedes mal erst auf "Synchronisieren" im Backend klicken, damit die Dateien im Frontend auch entsprechend angezeigt werden.

    Kann man das irgendwie automatisieren? Kann man irgendwie den Build-Server nach Abschluss des Uploads z.B. einen HTTP-Request durchführen lassen, der die Synchronisation anschmeißt? Oder irgendwie einen Cron-Job immer um 09:30 Uhr laufen lassen? Nur was genau muss der Cron-Job ausführen?

    Viele Grüße

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

    Standard

    PHP-Code:
    \Dbafs::syncFiles(); 
    muss der Cronjob aufrufen, mehr nicht

  3. #3
    Contao-Nutzer Avatar von truni
    Registriert seit
    18.08.2009.
    Ort
    Zürcher Unterland
    Beiträge
    166

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    PHP-Code:
    \Dbafs::syncFiles(); 
    muss der Cronjob aufrufen, mehr nicht
    Hallo Spooky,
    baue ich den Befehl von dir in /system/cron/cron.php ein und lösche alle andern vorhandenen Zeilen – oder werden diese benötigt zum Aufruf? Das Script wird dann providerseitig aufgerufen mit einer Zeitsteuerung.

    (die Thematik ist neu für mich)

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

    Standard

    Nein, du solltest eine eigene Extension schreiben, wo du dir dann einen TL_CRON Hook schreibst, worin wiederum nur dieser Befehl aufgerufen wird.

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

    Standard

    Eigentlich braucht man nicht unbedingt eine eigene Extension dafür. Es reicht auch zB folgender Eintrag in der initconfig.php:
    PHP-Code:
    $GLOBALS['TL_CRON']['hourly'][] = array('Dbafs','syncFiles'); 
    Oder man baut sich eine ganz simple Extension mit nur einer einzelnen Datei:

    /system/modules/dbafs_cron/config/config.php
    PHP-Code:
    <?php

    $GLOBALS
    ['TL_CRON']['hourly'][] = array('Dbafs','syncFiles');
    Geändert von Spooky (17.12.2015 um 13:24 Uhr)

  6. #6
    Contao-Nutzer Avatar von truni
    Registriert seit
    18.08.2009.
    Ort
    Zürcher Unterland
    Beiträge
    166

    Frage

    …*wie lautet der Eintrag für Contao 4.4.x, wenn ich das auch in der localconfig.php hinterlegen soll. Identisch?
    Code:
    $GLOBALS['TL_CRON']['hourly'][] = array('Dbafs','syncFiles');
    Wird dieser Befehl dann automatisch (eben alle Stunden …) z.B. angeworfen oder muss er noch «angschoben»*werden mit einem Cron-Aufruf (habe mal von dieser Syntax gehört, da scheinbar ein Konsolen-Aufruf nicht mehr gehe …?): https://meine_domain.xyz/_contao/cron

    Danke für einen Tipp!

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

    Standard

    Zitat Zitat von truni Beitrag anzeigen
    …*wie lautet der Eintrag für Contao 4.4.x, wenn ich das auch in der localconfig.php hinterlegen soll. Identisch?
    Code:
    $GLOBALS['TL_CRON']['hourly'][] = array('Dbafs','syncFiles');
    Prinzipiell sollte der Befehl identisch sein, allerdings passt es besser, wenn du es in die app/Resources/contao/config/config.php schreibst. Oder wenn du ein lokales Bundle für das Projekt verwendest, dann dort.



    Zitat Zitat von truni Beitrag anzeigen
    Wird dieser Befehl dann automatisch (eben alle Stunden …) z.B. angeworfen oder muss er noch «angschoben»*werden mit einem Cron-Aufruf (habe mal von dieser Syntax gehört, da scheinbar ein Konsolen-Aufruf nicht mehr gehe …?): https://meine_domain.xyz/_contao/cron
    Genau, ja. So lautet die Route.

  8. #8
    Contao-Nutzer Avatar von truni
    Registriert seit
    18.08.2009.
    Ort
    Zürcher Unterland
    Beiträge
    166

    Standard

    Gut, aber die app/Resources/contao/config/config.php muss ich ggf. manuell erstellen, inkl. Pfad?

    Und das wären die alle steps?
    • den config.php Eintrag machen
    • den Command-Scheduler deaktivieren (Einstellungen)
    • https://meinedomain.xyz/_contao/cron automatisch ausführen lassen z.B. via PLESK-Verwaltung (geplante Aufgaben)?

    Erst danach würde sich die Filebase auch wirklich automatisch updaten z.B. für eine Galerie mit aktuellem Material, das (ausserhalb Contao) ins Verzeichnis geladen wird?

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

    Standard

    Genau, ja .

  10. #10
    Contao-Nutzer Avatar von truni
    Registriert seit
    18.08.2009.
    Ort
    Zürcher Unterland
    Beiträge
    166

    Standard

    Danke, das geht =)

    Allerdings nur wenn ich untenstehenden Code hier hinterlege:
    system/config/initconfig.php

    und nicht hier, das updated scheinbar nicht wirklich beim Cron-Aufruf:
    app/Resources/contao/config/config.php

    Code:
    <?php
    $GLOBALS['TL_CRON']['minutely'][] = array('Dbafs','syncFiles');

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

    Standard

    Hm, sollte es aber. Die initconfig.php funktioniert auch, aber app/Resources/... wäre korrekter.

    Vorsicht: ich würde nicht "minutely" verwenden, denn dieses Kommando kann unter Umständen sehr lange dauern.

  12. #12
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.060
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Du kannst natürlich auch einfach einen "normalen" Cronjob hernehmen, der die ausführbare Datei in system/bin ausführt. Heisst glaube ich syncfiles oder so ähnlich.

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

    Support Contao

    Standard

    Zitat Zitat von truni Beitrag anzeigen
    Gut, aber die app/Resources/contao/config/config.php muss ich ggf. manuell erstellen, inkl. Pfad?
    Hast Du danach auch den Symfony Cache var/cache gelöscht bzw. erneuert?
    Contao Community Administrator

    [Unterstützungsmöglichkeiten]

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
  •