Shopware Knowledgebase

Shopware 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, oder das Verschicken von Geburtstagsgrüßen oder Newsletter an die Kunden und Geschäftspartner. Shopware bietet dazu zwei verschiedene Grund-Cronjobs, die Sie einzeln oder zusammen zu gleichen oder unterschiedlichen Zeiten / Intervallen ansprechen können. In der aktuellen Version liegt der Unterschied im Controller, den Sie im Verlauf leicht erkennen werden.

Unterschiede beim Versionswechsel 3.5.x

Im Grunde unterstützen beide Versionen Cronjobs. Lediglich der Aufruf der Steuer- bzw. Cronjob-Dateien erfolgt mit unterschiedlichen Pfaden bzw. Parametern. Hier beide Varianten im Vergleich:

bis Shopware 3.0.5.1

/engine/connectors/api/cronjob/shopware.php
/engine/core/php/campaigns.php

ab Shopware 3.5.x

/shopware.php?module=backend&controller=cron
/shopware.php?module=backend&controller=newsletter

Was ist mit Windows-Servern?

Windows Server kennen keine Cronjobs. Allerdings gibt es unter Windows so genannte Tasks, also wiederkehrende Aufgaben. Ab Windows Vista nennen sich die Tasks deshalb auch Aufgabenplanungen. Dort können Sie z.B. den Internet Explorer zyklisch starten lassen und eine URL ansurfen lassen.

Die URL ist im Grunde genommen der Pfad zur Datei wie oben beschrieben. Es fehlt lediglich Ihre Shop-Domäne davor. Die URL setzen Sie in der Aufgabenplanung je nach System einfach in die Eingabezeile zur ausführenden Applikation oder in die Parameter-Eingabezeile (ab Windows 7).

Wie starte ich einen Cronjob?

Da gibt es gleich mehrere Möglichkeiten. Nicht alle können Sie nutzen. Die Verwendung von Cronjobs ist Provider-gebunden. Das bedeutet, Sie sind auf dessen Vorgaben angewiesen. Im Zweifelsfall kontaktieren Sie vorher Ihren Provider.

Cronjob per Browser starten

Um den Cronjob mal eben zu testen oder unter Windows-Umgebungen per Aufgabenplanung regelmäßig auszuführen, geben Sie im Browser die URL Ihres Shops ein, gefolgt von dem o.g. Pfad zur Steuerdatei:

http://www.meinshop.de/shopware.php?module=backend&controller=cron
http://www.meinshop.de/shopware.php?module=backend&controller=newsletter

Die Ausführung erfolgt dann direkt und das Ergebnis ist im Browser als Text zu lesen. Bitte beachten Sie, dass es einige Cronjobs gibt, die evtl. über die erlaubte Verbindungszeit oder die erlaubte Script-Laufzeit hinauslaufen. In solchen Fällen können Sie die Cronjob-Aufgaben reduzieren, der Hoster/Provider die Ausführungszeit erhöhen, oder der Cronjob muss per Shell/Konsole ausgeführt werden.

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 oder Konsolenbefehl gestartet werden. In der Verwaltungsoberfläche Ihres Providers finden Sie dazu passende Einstellungen. Ihr Provider hilft Ihnen ebenfalls beim Einrichten weiter.

Cronjob Einrichten

Standard Cronjob:

php5 /pfad/zu/shopware.php backend/cron

Alternativ:

php5 /var/www/shopware.php module=backend controller=cron

Newsletter / Campaings:

php5 /pfad/zu/shopware.php backend/newsletter

Alternativ:

php5 /var/www/shopware.php module=backend controller=newsletter

Wir empfehlen hier eine Einstellung zu wählen, die die Datei alle 10-15 Minuten ausführt. Um herauszufinden, welcher PHP-Interpreter verwendet wird, können Sie auf der Kommandozeile »which php5« eingeben.

Bei einigen Hostern (z.B. Host-Europe) können Sie den Cronjob so nicht aufrufen, hier legen Sie eine Datei (z.B. cron.php) in das Root-Verzeichnis und verwenden eines der folgenden Bespiele.

Mögliche Beispiele: Den notwendigen Interpreter-Aufruf (#!/../../php5) erfahren Sie auch bei Ihrem Provider.

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

#!/usr/bin/php
<?php
wget -q http://www.meinshop.de/shopware.php?module=backend&controller=cron

#!/usr/bin/php
<?php
*/15 * * * * wget -q http://www.meinshop.de/shopware.php?module=backend&controller=cron

Speichern Sie die Datei im Format »ASCII« ab. Setzen Sie 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)

Crontab Einrichten

Verbinden Sie sich zur Konsole des Servers, den Sie einsetzen. Um auf die Cronjobs des Betriebssystems zuzugreifen, führen Sie den Unix-Befehl crontab -e aus und starten Sie so die Console:

dev:/var/www# crontab -e
#/etc/crontab: system-wide crontab
#Unlike any other crontab you don't have to run the `crontab'
#command to install the new version when you edit this file.
#This file also has a username field, that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
#m h dom mon dow user command
30 * * * * root /var/www/shopware.php module=backend controller=cron

Konfiguration in Shopware

Grundsätzlich ist Shopware noch nicht für die Verwendung von Cron-Funktionen eingerichtet. Notwenige Plugins sind nicht mit der Installation aktiviert. Wenn Sie die Cron-Funktionalitäten verwenden möchten, so installieren Sie nun die erforderlichen Komponenten.

Notwenige Plugins Installieren und Aktivieren

Im Backend unter Einstellungen => Plugins ist es zwingend erforderlich, alle notwendigen Plugins zu installieren und zu aktivieren. Suchen Sie in der Pluginliste nach "cron". Sie finden mehrere Einträge. Aktivieren Sie die Plugins »CRON« für die normale Abarbeitung der wesentlichen Funktionen und optional die Plugins »CronStock«, »CronRefresh«, »CronRating«, »CronBirthday« um zusätziche Funktionen zu erhalten. Bitte beachten Sie dabei, je mehr Sie an zusätzlichen Cron-Aufgaben einbetten, umso länger dauert auch die Abarbeitung. Das wiederrum führt dazu, dass gerade beim Cronaufruf per Browser u. U. nicht alles abgearbeitet werden kann.

Die Cronjob-Steuerung im Detail

Jede einzelne Aufgabe kann in den Grundeinstellungen => Cronjobs => Bereinigung => Cronjobs konfiguriert werden.

Beschreibung der Felder:

Feld Beschreibung
Name Name des Cronjobs(Funktion)
Action Funktion im Cronjob
Data Informationen aus der Funktion
Nächste Ausführung Datum der nächsten Ausführung des Cronjobs
Interval Gibt den Intervall in Sekunden an, wann die Funktion als nächstes aufgerufen wird
Aktiv Schaltet die Funktion An(1) oder Aus(0)
eMail Template Optional verwendetes eMail-Template
Empfänger eMail-Adresse Gibt dem Empfänger eventuell in der Funktion zu verschickende eMails an

WICHTIG: Einige dieser aufgeführten Cronjobs werden nur im Zusammenhang mit dem CronRefresh ausgeführt. Weitere Informationen dazu finden Sie hier.

Tipp: Sie können mit den Cronjobs "Newsletter" und die "Datenbereinigung" an dieser Stelle auch per Klick ausführen.

Wenn es nicht klappt

Schnelltest

Sie können den Cronjob für die Datenbereinigung im Backend unter Einstellungen => Grundeinstellungen => Cronjobs auch per Klick ausführen. Sie sollten dann eine eMail mit einem Protokoll erhalten. Falls die eMail nicht bei Ihnen ankommt, ist entweder der eMail-Weg gestört (Spamordner?) oder die Mail-Funktion bei Ihrem Hoster / Provider ist nicht eingerichtet.

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. Setzen Sie 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 unternommen werden.

Richten Sie im Backend unter Einstellungen => Grundeinstellungen => System und Basiskonfiguration => Mailer einen Mailserver ein, den Sie ansprechen können. Als Methode tragen Sie "smtp" ein. Ab jetzt sucht der Shopware-Server nach dem unter SMTP Host eingetragenen Server. Mit dem SMTP-Username und dem SMTP password authentifizieren Sie sich dort. Fragen Sie bei Ihrem Mail-Provider nach, ob dort eine Plain, Login oder die verschlüsselte CramMD5-Methode zur Übertragung der Zugangsdaten erforderlich ist.

Artikel-PDF erstellen

Artikel bewerten

Waren diese Informationen hilfreich? Ja Nein


Weitere interessante Artikel:

Bezeichnung:
Rating:
Klicks:
Datum:

Kategorien:

Bestell-Nr.: 63772__5879

Lieferzeit ca. 5 Tage

€ 1,00

Preise inkl. gesetzlicher
MwSt. zzgl. Versandkosten*

€ 1,00

Preise inkl. gesetzlicher
MwSt. + Versandkosten*