Shopware: Cache aufwärmen per Cron-Job

Frage: Ist es möglich, in meinem Shopware den Cache regelmäßig zu aktualisieren ohne das über das Backend erledigen zu müssen?

Antwort: Ja, ist es. Das kann über einen Cron-Job, der in regelmäßigen Intervallen läuft, gelöst werden.

Benötigt wird dazu:

  • ein Cron-Skript (hier cron_cache_warmup.sh) und ggf. eine
  • php.ini (zum einbinden des ioncube_loaders)

Das Cron-Skript löscht im ersten Schritt den Cache, anschließend wird ein PHP-Skript zum Aufwärmen des Caches aufgerufen.

Es werden folgende Informationen benötigt:

  • PHP-Version der Domain (geht am einfachsten im Hosting-Backend/Domaineinstellungen),
  • die dazu passende PHP-cli
  • und den Pfad zum passenden ionCube_Loader, der über eine extra php.ini beim Skript-Aufruf eingebunden wird.

Beide Dateien, Cron-Skript und zugehörige php.ini, können im Rootverzeichnis des Auftrags in einen eigenes Verzeichnis (hier cron-cache-warmup) gelegt werden. Das macht die Zuordnung von php.ini und Skript einfacher.

Die php.ini sollte (z. B. bei php7) folgenden Inhalt haben:

[PHP]
  zend_optimizer.enable_loader = "1"
  zend_extension = "/usr/local/lib/php_modules/7-70STABLE/ioncube_loader_lin_7.0.so"

Das Cron-Skript sieht folgendermaßen aus:

#!/bin/bash

# Cache leeren
/Pfad/zum/Shop/cache/clear_cache.sh

# Cache neu aufbauen
env -i /usr/local/bin/php7.0.6-cli -c /Pfad/zur/php.ini -f /Pfad/zum/Shop/bin/console sw:warm:http:cache

Infos zum Skript:

  • env -i: ruft die anschließende php-cli auf.
  • -c: (Look  for  php.ini file in the directory path or use the specified file) dieser Parameter veranlasst die php-cli eine extra php.ini einzubinden.
  • -f: (Parse and execute file) Ausführen des angegebenen Skript-Files.

Der Cron-Job selber wird im Kundenbackend angelegt.
Die Pfadangabe zum Shell-Skript darf in diesem Fall nicht mit einem ‚/‘ beginnen.
Der Cronjob sollte ca. alle 4 Stunden laufen.

Wie immer gilt: testen und Einsatz auf eigene Verantwortung

0 Kommentare

Dein Kommentar

Want to join the discussion?
Feel free to contribute!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.