Contao-Camp 2024
Ergebnis 1 bis 6 von 6

Thema: [GELÖST] Filesync führt zu einem "Stillstand" der Webseite

  1. #1
    Contao-Nutzer Avatar von rory_ch
    Registriert seit
    11.05.2016.
    Ort
    Schweiz
    Beiträge
    119

    Frage [GELÖST] Filesync führt zu einem "Stillstand" der Webseite

    Ausgangslage
    Dateien werden automatisiert ins /files/sync geladen (per RSYNC).
    Gleichzeitig wird ein Import von Datensätzen ausgeführt, jene auf Bilder im files/sync verweisen.
    Im Frontend wird per FrontendModule und Bildgrössen/Picture-Element auf die Bilder zugegriffen.

    Problem
    Wenn die Bilder von Contao noch nicht erkannt wurden, kann es sein, dass ein vorhandenes Bild nicht gefunden wird und keine Bildgrössen etc. verwendet werden können.

    Eigene Lösung
    Beim Import wird jetzt gleich auch die Datenbank aktualisiert, per:
    PHP-Code:
    \Dbafs::syncFiles(); 
    Folgeproblem
    Solange der syncFiles läuft, steht die Webseite still - bzw. der Webserver beantwortet keine Anfragen mehr.
    Ich gehe davon aus, dass es einen Grund gibt dafür (Datenkonsistenz?).

    Frage
    Gibt es eine Möglichkeit, die Files irgendwie im Hintergrund zu synchen?
    Ist in diesem Sinne evtl. auch keine "Contao" Frage sondern eher eine PHP-Prozess Handling Frage, aber trotzdem wollte ich mal abklären, ob jemand eine clevere Lösung dafür hat.

    Danke im Voraus für eure Hilfe
    Geändert von rory_ch (01.07.2019 um 18:29 Uhr)

  2. #2
    Contao-Urgestein Avatar von Kahmoon
    Registriert seit
    22.06.2009.
    Ort
    München
    Beiträge
    5.280

    Standard

    Wie oft führt ihr das denn durch? Der Sync is imho sehr ressourcenhungrig, weshalb ich sowas nachts per Cron machen würde.

  3. #3
    Contao-Nutzer Avatar von rory_ch
    Registriert seit
    11.05.2016.
    Ort
    Schweiz
    Beiträge
    119

    Standard

    Danke für deine Antwort.

    Da es sich um Produkte handelt, die aus einem Shop importiert werden und immer relativ aktuell sein sollten, wollten wir das ca. all 30 bis 60 min laufen lassen.
    So hätte man all 30 min einen bis zu 30 Sekunden langen "Unterbruch" im Frontend.

    Daher wollte ich mal nach Alternativen Ausschau halten.

    Als "Worst-Case-Scenario" würde ich den Sync auch in der Nacht oder evtl. auch über den Mittag laufen lassen und im Frontend-Modul einfach zuerst checken, ob Contao das File schon kennt und falls nicht, direkt das Original ausgeben.

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

    Support Contao

    Standard

    Wieviele Dateien sind denn das und sind die Dateinamen und Pfade bekannt? Dann wäre es wahrscheinlich sinnvoller und deutlich schneller, diese Dateien direkt mit \Dbafs::addResource hinzuzufügen.

  5. #5
    Contao-Nutzer Avatar von rory_ch
    Registriert seit
    11.05.2016.
    Ort
    Schweiz
    Beiträge
    119

    HTML die Lösung

    Perfekt! Kannte diese Methode noch nicht.

    Habe mir eine neue Logik überlegt.
    Anstatt alles zu synchen, suche ich im RSYNC Verzeichnis nach veränderten Dateien (in den letzten 15min) und füge diese einzeln hinzu, das geht wesentlich schneller (benötigt einfach shell_exec in den PHP Einstellungen) aber ich denke das ist das kleinere "Übel".
    Zudem lasse ich das ganze am Morgen doch noch einen ganzen Synch machen.

    Sieht jetzt so aus:

    PHP-Code:
    $strCurrentTime strtotime('now');

    if (
    $strCurrentTime strtotime('05:00am') && $strCurrentTime strtotime('05:30am')){

         \
    Dbafs::syncFiles();

    } else {
        
        
    $strEditedFiles shell_exec("find files/sync/ -type f -cmin -15");
        
    $arrEditedFiles preg_split('/\s+/'trim($strEditedFiles));
        
        foreach(
    $arrEditedFiles as $strFilePath){

            if(
    $strFilePath != ''){
                \
    Dbafs::addResource($strFilePath);
            }
        }


    Geändert von rory_ch (01.07.2019 um 18:34 Uhr)

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

    Support Contao

    Standard

    Man könnte auch darüber nachdenken, die Dateien aus dem RSYNC-Verzeichnis in ein anderes zu kopieren (einzeln) und jeweils nach erfolgreichem Hinzufügen der Datei dann das Original im RSYNC-Verzeichnis zu löschen. So läuft das RSYNC-Verzeichnis nicht voll im Lauf der Jahrzehnte und man kann immer einfach das gesamte Verzeichnis bzw alle Dateien darin hinzufügen ohne weitere Prüfung/Filterung.

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
  •