Cronjobs

Was ist ein Cronjob?

Der Cronjob ist eine Steuerung von Unix Betriebssystemen, um wiederkehrende Aufgaben automatisch zu einer bestimmten Zeit oder in Intervallen auszuführen. Shopware besitzt eine Reihe von Aufgaben, die regelmäßig ausgeführt werden können.

Dazu gehört unter anderem die Prüfung des Lagerbestands, um den Shopbetreiber auf Bestandsengpässe hinzuweisen, das Verschicken von Geburtstagsgrüßen oder Newsletter an die Kunden und Geschäftspartner. Shopware bietet dazu zwei verschiedene Grund-Cronjobs, die Du einzeln oder zusammen zu gleichen oder unterschiedlichen Zeiten / Intervallen ansprechen kannst. In der aktuellen Version liegt der Unterschied im Controller, den Du im Verlauf leicht erkennen wirst.

Konfiguration in Shopware

Grundsätzlich ist Shopware noch nicht für die Verwendung von Cron-Funktionen eingerichtet. Die notwendigen Plugins sind nicht mit der Installation aktiviert. Wenn Du die Cron-Funktionalitäten verwenden möchtest, so installiere nun die erforderlichen Komponenten.

Notwendige Plugins Installieren und Aktivieren

Im Plugin-Manager ist es zwingend erforderlich, alle notwendigen Plugins zu installieren und zu aktivieren, um die entsprechenden Cronjobs nutzen zu können. Nachfolgend eine Auflisting aller Cron-Plugins und den zugehörigen Cronjobs, die durch das Installieren der Plugins nutzbar werden:

Cron:

  • Suche: Baut den Suchindex neu auf (alter Job - abgelöst durch Refresh search index)
  • eMail-Benachrichtigung: verschickt Artikel-Verfügbarkeits-eMail an Kunden
  • Topseller Refresh: die Topseller werden neu berechnet
  • Similiar shown article refresh: berechnet Diese Artikel könnten Ihnen gefallen neu
  • Refresh seo index: leert den SEO Cache
  • Refresh search index: leert den Suche Cache
  • HTTP Cache löschen: leert den HTTP Cache
  • Media Garbage Collector: erfasst alle Bilder ohne Zuweisung und verschiebt diese in den Papierkorb des Media Manager.

CronBirthday:

CronRating:

  • Artikelbewertung per eMail: verschickt Erinnerung zur Artikelbewertung an den Kunden

CronStock:

  • Lagerbestands Warnung: Schickt eMail mit Artikel-Lagerbestand an hinterlegte eMail-Adresse

CronRefresh:

  • Aufräumen: Bereinigt s_core_log, s_emarketing_lastarticles, s_search_statistics

Bitte beachte dabei, je mehr Du an zusätzlichen Cron-Aufgaben aktivierst, umso länger dauert auch die Abarbeitung. Das wiederrum führt dazu, dass gerade beim Cron Aufruf per Browser u. U. nicht alles abgearbeitet werden kann oder der Seitenaufruf sehr lange dauert.

Wichtig: Grundvoraussetzung für die Benutzung aller Shopware-Cronjobs ist das installierte und aktivierte Plugin "Cron".

Die Cronjob-Steuerung im Detail

Beschreibung der Felder:

  • Name (1): Name des Cronjobs(Funktion).
  • Aktion (2): Funktion im Cronjob.
  • Ergebnisdaten (3): Informationen aus der Funktion.
  • Letzte & Nächste Ausführung (4): Datum & Uhrzeit der letzten und nächsten Ausführung des Cronjobs.
  • Intervall (5): Gibt den Intervall in Sekunden an, wann die Funktion als nächstes aufgerufen wird.
  • Aktiv (6): Schaltet die Funktion An oder Aus.
  • Bei Fehler deaktivieren (7): Deaktiviert den Cronjob, falls bei der Ausführung Fehler auftreten. (Im Standard aktiv)
  • eMail-Empfänger (8): Gibt dem Empfänger eventuell in der Funktion zu verschickende E-Mails an.
  • eMail-Template (8): Optional verwendetes E-Mail-Template.

WICHTIG: Einige dieser aufgeführten Cronjobs werden nur im Zusammenhang mit dem Plugin CronRefresh ausgeführt.

Cron Sicherheit

Mit Hilfe der Cron-Sicherheit kannst Du die Ausführung der Cronjobs auf eine bestimmte IP beschränken, nur ausführen, wenn ein User im Backend eingeloggt ist, oder mit einem Key versehen, damit nicht jeder die Ausführung anstoßen kann. Weitere Informationen dazu findest Du im zugehörigen Artikel: Cron-Sicherheit

Wie starte ich einen Cronjob?

Da gibt es mehrere Möglichkeiten, je nach Hoster kannst du evtl nicht alle davon nutzen, setze dich daher im Zweifel mit Deinem Hoster in Verbindung.

Cronjob per Browser starten

Um den Cronjob zu testen oder unter Windows-Umgebungen per Aufgabenplanung regelmäßig auszuführen, rufst du folgende URL im Browser auf:

 
// Aufruf aller Crons AUSSER Newsletter
http://www.meinshop.de/backend/cron
 
// Aufruf des Newsletter-Cronjobs
http://www.meinshop.de/backend/Newsletter/cron
 

Die Ausführung erfolgt dann direkt und das Ergebnis ist im Browser als Text zu lesen. Bitte beachte, dass es einige Cronjobs gibt, die evtl. über die erlaubte Verbindungszeit oder die erlaubte Script-Laufzeit hinauslaufen. In solchen Fällen kannst Du die Cronjob-Aufgaben reduzieren, der Hoster/Provider die Ausführungszeit erhöhen oder der Cronjob muss per Shell/Konsole ausgeführt werden. Alternativ kannst Du Deine Cronjobs auch so anordnen, dass alle eine unterscheidliche Ausführungszeit besitzen, also pro Aufruf immer nur wenige Cronjobs ausgeführt werden, um Timeouts zu verhindern.

Aufruf per Shell / Konsole

Innerhalb der Shell gibt es keine Begrenzungen was die Script-Laufzeit betrifft. Da hierbei auch keine Verbindung per Browser benötigt wird, können die Cronjobs idealerweise per Shell gestartet werden. Schau in der Verwaltungsoberfläche Deines Hosters, ob Du Shell-Zugriff hast, Dein Provider hilft Dir gegebenenfalls beim Einrichten weiter.

Um Cronjobs per Shell zu starten, kannst Du wie folgt vorgehen (stelle aber sicher, dass Du Dich in der Shell Sitzung bereits im Shopware Verzeichnis befindest!):

Klassische Methode: Diese Methode ist veraltet und wird nicht mehr empfohlen. Bitte verwende wenn möglich unsere CLI Tools.

 
// direkte Ausführung im Shopware Verzeichnis:
php5 shopware.php /backend/cron
 
// (intelligenter) Newsletter
cd /pfad/zumShop && php5 shopware.php /backend/Newsletter/cron
 

empfohlene Methode über die SW-Tools:

 
// Ausführen aller geplanten Cronjobs, falls fällig
php bin/console sw:cron:run
 
// Ausführen eines Cronjobs via Action-Name:
php bin/console sw:cron:run ACTION-NAME
 
// Forcierter (erzwungener) Aufruf des Cronjobs:
php bin/console sw:cron:run ACTION-NAME -f
 

Beachte, dass sich "ACTION-NAME" nach der ersten Ausführung ändern kann, der Aufruf ist aber dennoch gültig, es genügt, den Action-Name aufzurufen. (z.B. Shopware_CronJob_Clearing > Hier ist "Clearing" der Action-Name)

Achtung: Wenn Du Cronjobs via Shell ausführst, achte unbedingt darauf, dass der ausführende Benutzer mit dem der Shopware-Installation übereinstimmt, da es sonst zu Problemen mit Dateirechten kommen kann.

Beachte, dass das Aufrufen von Cronjobs per ACTION-NAME die "Aktiv"-Einstellung im Backend umgeht, wenn Du also einen inaktiven Cronjob ausführen willst, so wird dieser auch ausgeführt!

Cronjob Einrichten

Die Einrichtung der Cronjobs ist Sache des Hostings, da ausschließlich hier der regelmäßige Aufruf konfiguriert werden kann. Falls Du hier Fragen hast, kontaktiere bitte Deinen Hoster.

Wir empfehlen, eine Einstellung zu wählen, die die Cronjobs alle 10-15 Minuten ausführt. Um herauszufinden, welcher PHP-Interpreter verwendet wird, kannst Du auf der Kommandozeile which php5 eingeben.

Bei einigen Hostern (z.B. Host-Europe) kannst Du den Cronjob so nicht aufrufen, hier legst Du eine Datei (z.B. cron.php) in das Root-Verzeichnis und verwendest eines der folgenden Beispiele.

Mögliche Beispiele, falls der direkte Aufruf nicht konfiguriert werden kann

Den notwendigen Interpreter-Aufruf (#!/../../php5) erfährst Du auch bei Deinem Provider.

#!/usr/bin/php
<?php
echo file_get_contents('http://www.meinshop.de/backend/cron');

*/15 * * * * wget -q http://www.meinshop.de/backend/cron

Speichere die Datei im Format »ASCII« ab. Setze die Dateirechte der Datei auf 755.

*     *     *     *     *  Befehl der ausgeführt werden soll
-     -     -     -     -
|     |     |     |     |
|     |     |     |     +--	Wochentag (0 - 7) (Sonntag ist 0 und 7)
|     |     |     +------	Monat (1 - 12)
|     |     +----------	Tag (1 - 31)
|     +------------- 	Stunde (0 - 23)
+----------------- 	Minute (0 - 59)

Spezielle Cronjobs über die CLI ausführen

Es gibt einige Prozesse in Shopware, die nicht über das Cronjob Plugin ausgeführt werden können. Diese können jedoch über die CLI Tools als Cronjob angelegt haben. Hierfür gehst Du genauso vor wie im Punkt "Cron per SHELL/Konsole ausführen" und fügst die gewünschten Kommandos hinzu.

HTTP-Cache aufwärmen

Dieser Befehl ist besonders für die Verwendung als Cronjob hilfreich, da hierdurch die Ladezeiten des Shops nach Leeren des Caches deutlich verringert werden. Über den regulären Shopware Cronjob ist dieser Prozess nicht abgedeckt, weshalb dies als separater Cronjob in der Serverkonsole hinterlegt werden muss. Es ist empfehlenswert diesen Cronjob nach Löschen des HTTP Caches durchzuführen.

 
php bin/console sw:warm:http:cache
 

Weitere Befehle

Weitere Befehle findest du in unserem Shopware CLI Artikel.

Wenn es nicht klappt

Rechte

Bei Unix / Linux-Servern hat der Cronjob (also die Datei für den Cronjob) in der Regel nach dem Erstellen noch keine ausreichenden Rechte zum Ausführen. Setze daher die Rechte auf mindestens 755.

Mailfunktionen

Normalerweise funktioniert die »mail()«-Funktion auf allen Linux-basierenden Systemen direkt ohne weitere Konfiguration. Unter Windows-Servern gibt es diese Funktion nicht. Daher müssen bei Windows-Servern speziell noch weitere Schritte vorgenommen werden.

Richte im Backend unter Einstellungen => Grundeinstellungen => System und Basiskonfiguration => Mailer einen Mailserver ein, den Du ansprechen kannst. Als Methode trägst Du "smtp" ein. Ab jetzt sucht der Shopware-Server nach dem unter SMTP Host eingetragenen Server. Mit dem SMTP-Username und dem SMTP password authentifizierst Du Dich dort. Frage bei Deinem Mail-Provider nach, ob dort eine Plain, Login oder die verschlüsselte CramMD5-Methode zur Übertragung der Zugangsdaten erforderlich ist.

Weitere interessante Artikel:

Plugin: CronRefresh

Funktionen des Plugins Grundvoraussetzung für das CronRefresh-Plugin ist ein '''aktives Cronjob-Plugin (1)'''. Sofern das Plugin ''Cronjob'' aktiv ist, können mit Plugin CronRefresh die unten aufgeführten Aufgaben erledigt werden:...

weiterlesen

Newsletter

Vorwort Mit dem Newsletter Manager von Shopware hast du den idealen Weg um mit deinen Kunden dauerhaft in Kontakt zu bleiben. Wir erklären dir hier wie du in wenigen Schritten deinen ersten Newsletter Konfigurierst. Neben dem hier...

weiterlesen

E-Mail-Vorlagen

Vorwort Unter dem Abschnitt '''Einstellungen > eMail-Vorlagen''' findest Du alle in Shopware verwendeten Standard-E-Mails. Oberfläche [img|0|original] Linke Spalte Auf der linken Seite findest Du alle Vorlagen aufgeführt. Du...

weiterlesen

Artikelbewertung

Vorwort Shopware gibt Besuchern die Möglichkeit, Artikel zu bewerten und damit erweiterte Artikel-Informationen bereitzustellen, von denen alle Kunden profitieren. Bewertungen können für jeden Artikel abgegeben werden. In der Übersicht sind...

weiterlesen

Newsletter

* '''Anzahl der Mails, die pro Cronjob-Aufruf versendet werden''': Wieviel eMails sollen pro Schrittt/Request verschickt werden. Es ist wichtig den Versand des Newsletter in kleinere Teilschritte zu zerlegen um zu verhindern, dass der...

weiterlesen

Plugins

Vorwort Hier können Sie Einstellungen bezüglich Plugins vornehmen. Die Einstellungen finden Sie unter Einstellungen --> Grundeinstellungen --> System --> Plugins. Das Grid (1) * Name: Hier wird der Name des Plugins angezeigt. *...

weiterlesen

Plugin: Cron

Das '''Cronjob Plugin (1)''' ist Grundvoraussetzung für die Benutzung der Cronjobs im Backend von Shopware. Ohne aktiviertes Cronjob Plugin werden keine Cronjobs ausgeführt. Auch andere Cron Plugins wie z.B. CronRefresh benötigen dieses Plugin....

weiterlesen

Plugin: CronBirthday

Das '''Plugin CronBirthday (1)''' wird für den eMail-Versand von Geburtstags-Glückwünschen benötigt. Ohne das aktivierte Plugin werden keine eMails mit Geburtstags-Glückwünsche, optional mit einem indivduellen Geburtstags-Gutschein, an den Kunden...

weiterlesen

Cron-Sicherheit

Mit Shopware 4.3.0 ist es möglich den Aufruf des Shopware-Cronjobs sicherer zu gestalten. * '''Gültiger Schlüssel (1):''' Hier können Crojobs nur noch per URL Attribut mit dem gültigen Schlüssel aufgerufen werden. An die bestehende URL ist dann...

weiterlesen
€ 1,00

Preise inkl. gesetzlicher
MwSt. + Versandkosten*