Asynchrone Aufrufe

Weblication® CMS nutzt an diversen Stellen asynchrone Aufrufe, um (weitere) Vorgänge anzustossen.

Um Vorgänge unabhängig vom aktuellen Aufruf im Hintergrund laufen zu lassen, sind asynchrone Aufrufe das Mittel der Wahl. Solche asynchronen HTTP-Aufrufe (via GET) müssen vom Webserver unterstützt werden (siehe hierzu Abfrage von "Asynchronous Requests" in den Weblication® CMS Serverinformationen) und erfordert je nach CMS-Version ggf. andere Einstellungen.

Vorgänge und Funktionen, bei denen in Weblication® CMS asynchrone Aufrufe standardmäßig verwendet werden sind u.a.:

  • Löschen des Projektcache (über Verzeichnisereignisse)
  • Aktualisieren des Suchindex der Volltextsuche (über Verzeichnisereignisse)
  • Löschen / Bereinigen der tmp- und tmpHTTP Systemverzeichnisse

Hintergrund für die Nutzung eines asynchronen Aufrufes ist in der Regel, daß beim Ausführen einer Aktion (z.B. Seite speichern) die weitere Aktion (z.B. Projektcache löschen) losgelöst von der ersten Aktion abgearbeitet wird. Im Beispiel muß der Seite speichern Vorgang bei asynchronem Aufruf zum Löschen des Projektcache auf diesen Vorgang nicht warten. Ohne asynchronen Aufruf kann der Vorgang des Speicherns erst abgeschlossen werden, wenn die andere Aktion auch beendet ist.

Sofern ein Webserver solche Requests nicht unterstützt, gibt es unterschiedliche Möglichkeiten darauf einzugehen (auch abhängig von der CMS-Version). Über die PHP Framework-Funktion "wNet::getUrlAsync" (siehe weiterführende Links am Artikelende) können Sie übrigens prüfen, inwieweit asynchrone Aufrufe auf dem Webserver funktionieren. Wichtig ist hierbei auch, ob die GET-Aufrufe über socket oder curl gehen, worauf nachfolgend auch eingegangen wird.

Allgemein / Deaktiveren asynchroner Aufrufe

Unterstützt ein Webserver asynchrone Aufrufe generell nicht oder soll erstmal schnell die anzustossende Aktion ermöglicht werden, kann manuell in den Weblication® Systemeintellungen der asynchrone Aufruf deaktiviert werden.

Setzen Sie hierzu den Wert des allowAsync-Attributes innerhalb des wUserAgent-Tags auf den Wert "0".

Sofern das Tag in der default.wConf.php noch nicht vorhanden sein sollte, setzen Sie dies XML-Konform.
Speichern Sie die Konfigurationsdatei UTF-8 kodiert ab.

Beispiel: Auszug aus der /weblication/grid5/conf/default.wConf.php

<wConf version="15">
  ...
  <wUserAgent allowAsync="0" />
  ...
</wConf>

Dies kann als Administrator eingeloggt ab CMS-Version 12 auch durch folgenden Aufruf über die lizenzierte Domain automatisch gesetzt werden:

https://[lizenzierte-Domain]/weblication/grid5/scripts/wSystem.php?action=setConfValue&element=/wConf/wUserAgent&attribute=allowAsync&value=0

Einstellungen ab CMS-Version 14

Ab CMS-Version 14 werden asynchrone Aufrufe bereits im Standard über curl (curl_multi_exec) abgewickelt.
Ausnahme:

  • /wConf/wUserAgent/@allowAsync = 2
    Asynchrone Aufrufe erfolgen über socket (fsockopen).
    Dies kann als Administrator eingeloggt auch durch folgenden Aufruf über die lizenzierte Domain automatisch gesetzt werden:

    https://[lizenzierte-Domain]/weblication/grid5/scripts/wSystem.php?action=setConfValue&element=/wConf/wUserAgent&attribute=allowAsync&value=2

  • /wConf/wUserAgent/@asyncType = curl
    Ab CMS-Version 014.002.043.002 verfügbar.
    Asynchrone Aufrufe erfolgen über curl (curl_multi_exec).
    Dies kann als Administrator eingeloggt auch durch folgenden Aufruf über die lizenzierte Domain automatisch gesetzt werden:
    https://[lizenzierte-Domain]/weblication/grid5/scripts/wSystem.php?action=setConfValue&element=/wConf/wUserAgent&attribute=asyncType&value=curl
    Wenn ab CMS-Version 014.002.072.000 noch das alte Prinzip gewünscht ist, muss auf asyncType="socket" umgestellt werden.


Einstellungen zu CMS-Version 13

Ab CMS-Version 13 (013.004.051.029) besteht die Möglichkeit, die Art des Aufrufes zu beeinflussen, anstatt generell die asynchronen Aufrufe zu deaktivieren.

Bezogen auf das Quelltextbeispiel zur default.wConf.php oben sind folgende Einstellungen/Werte möglich:

  • /wConf/wUserAgent/@allowAsync = 3
    Asynchrone Aufrufe erfolgen über curl (curl_multi_exec).
    Dies kann als Administrator eingeloggt auch durch folgenden Aufruf über die lizenzierte Domain automatisch gesetzt werden:
    https://[lizenzierte-Domain]/weblication/grid5/scripts/wSystem.php?action=setConfValue&element=/wConf/wUserAgent&attribute=allowAsync&value=3