Wann werden BackgroundJobs ausgeführt?

  • Hallo,


    ich möchte aktuell BackgroundJobs einsetzen. Diese BackgroundJobs werden im ACP generiert. Mir ist bewusst, dass BackgroundJobs nur vom Frontend aus ausgeführt werden.

    Wenn ich nun ins Frontend wechsle und die Seite aktualisiere, wird der BackgroundJob nicht direkt ausgeführt. Erst nach einige Minuten - mit mehreren Aktualisierungen dazwischen - wurden die Jobs in meinem Test ausgeführt. Die Spalte time in der Tabelle wcf1_background_jobs lag bei meinen Tests übrigens immer in der Vergangenheit.


    Wenn ich allerdings ein

    PHP
    BackgroundQueueHandler::getInstance()->forceCheck();

    im Frontend ausführe, werden die Jobs direkt ausgeführt. Woran liegt es, dass es ewig dauert bis die Jobs angetriggert werden?

    Ist das mglw. ein Fehler? Die Aktion BackgroundQueuePerformAction wird übrigens auch nur sporadisch aufgerufen.


    VG

    Peter // Hanashi

    • Official Post

    Hallo,


    wenn forceCheck nicht verwendet wird, dann wird die Background-Queue probabilistisch in 10% der Seitenaufrufe via AJAX angestoßen. Pro Aufruf werden bis zu 5 Jobs verarbeitet und wenn dann noch Jobs ausstehen werden bis zu 5 Aufrufe getätigt.


    https://github.com/WoltLab/WCF…re/BackgroundQueue.js#L48

    https://github.com/WoltLab/WCF…tstrapFrontend.js#L47-L50

    https://github.com/WoltLab/WCF…mAction.class.php#L16-L20

  • Hallo,


    danke dir für die Erklärung und die Verlinkung. Das mit den 10% ist genau das, was ich auf Anhieb nicht gefunden habe im Code ^^


    Warum werden BackgroundJobs nicht immer versucht auszuführen wenn welche vorhanden sind? Hat das Performance-Gründe?


    VG

    Peter // Hanashi

    • Official Post

    Hallo,


    im Regelfall ist es ausreichend die Queue über forceCheck anzustoßen und vermutlich werden Jobs bei weniger als jedem 10. Seitenaufruf erzeugt. Für jede reguläre Anfrage noch eine Ajax-Anfrage durchzuführen wäre da eine Verschwendung von Ressourcen. Insbesondere dann, wenn einige Webhoster "allergisch" auf automatisierte Anfragen reagieren.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!