Hallo Zusammen,
wir haben eine Frage bezüglich dem Newsletter und Cronjob.Jedes Mal wenn wir versuchen unserern Newsletter zu einem bestimmten Zeitpunkt automatisch verschicken zu lassen, funktioniert dies bei uns nicht. Sobald der Versandzeitpunkt erreicht ist, ändert sich der Status des Newsletters auf 0% E-Mails versendet, bleibt dort aber auch für mehrere Stunden stehen, ohne dass sich etwas ändert. Die Newsletter Einstellungen übernehmen wir genau aus der Doku (http://community.shopware.com/Newsletter_detail_933.html). Das Intervall des Cronjobs beträgt eigentlich auch nur 5 Minuten.
Hat jemand von Euch eine Idee, was das Problem sein könnte?
Vielen Dank für Eure Hilfe.
Cron Plugin aktiviert?
Rechte min. auf 755?
Wenn ja, dann ruf doch mal den Cronjob von Hand im Browser auf: dein-shop.de
Hallo,
vielen Dank für deine Hilfe.
Das Cron Plugin wird als aktiviert angezeigt (Im Plugin Manager). Wo genau kann man die Rechte ändern ("Rechte min. auf 755?)
Wenn wir den Cronjob dann manuell starten, versendet er den Newsletter auch ganz normal.
Aha, ok, dann stimmt vielleicht was mit dem eingerichteten Cron Job nicht…!?
Wir haben exakt das gleiche Problem… wir stellen den Newsletter aus Ausführungszeit “sofort”; aber es dauert Stunden mit einem Wert von 0%…
Wir rufen dann manuell den Cron über den Browser auf und laden die Seite immer wieder neu. Das kann ja nicht die Lösung sein.
Gibt es hier inzwischen neue Erkenntnisse? Habe gerade bei einem Shop das gleiche Problem. VG Jens
mir geht es genauso, wie ist der korrekte aufruf als cron ?
SW 5.7.16 und PHP7.4
lieben dank …diesen Artikel kenne ich beinahe auswendig… Allgemeinplätze für cron und für den intelligenten Newsletter leider nicht zu gebrauchen…
CLI ist depreceated
Wenn du eine korrekte Syntaax für die shopware console hast… bitte gerne teilen
vielen Dank Thomas
php shopware.php /backend/Newsletter/cron
oder
wget -q https://deine-shopdomain.de/backend/Newsletter/cron
sollte immer noch funktionieren.
wget… wird erfolgreich abgeschlossen aber es werden keine mails versendet…
php mit absolutem pfad für die shopware PHP wird mit fehler, den composer zu installieren quittiert.
andere swag cron jobs laufen alle gut…
es ist zum erbrechen, wieviel zeit man hier verbraten kann,
Stimmt denn der Versandzeitpunkt im Newsletter und ist das „Cron“ Plugin installiert ?
Als Versandzeitpunkt mal probieren, anstelle von „Sofort“ auf ein Datum/Uhrzeit in der Zukunft zu stellen.
ja cron plugin ist installiert, wir haben ja auch andere Cron jobs… ein paar über den SWAG CronManager ein paar über cron Verwaltung von ubuntu / Plesk (root server)
mit und ohne Zeit/Datum … schon alle varianten durch.
shopware.php ist auch rechte überprüft
… und in den Newsletter Einstellungen ist bei „Veröffentlicht“ und „Bereit zum Versenden“ auch der Haken gesetzt ? So klappt das bei mir (auch Plesk, verwende allerdings als Cron-Typ „URL abrufen“, wobei das auch nichts anderes als wget/curl ist) - weiterer Punkt könnte auch noch sein, dass Ihr einen Cron-Key verwendet. Dann müsste dieser mit in den wget Request:
https://deine-shopdomain.de/backend/Newsletter/cron?key=DeinCronKey
erstmal vielen Dank für die Mühe…
ja wir haben alle erdenklichen Formate, Kombinationen etc. bereits mehrfach durch… wir haben auch firewalls etc. abgeschaltet… einzig nur der Aufruf im Browser funktioniert für den Newsletter.
Alle anderen cron Jobs laufen einwandfrei. wie z.B. Mahnungen, Aufräumen, Backups etc.
Ein Rätsel
Hier ein Batch File für Dich:
@echo off
curl http://www.DeinShop.de/backend/Newsletter/cron?key=DeinCronKey
Kopiere Dir den Code in eine Textdatei, passe dann noch die URL sowie den CronKey an und speicher diese Textdatei dann z.B. als »SendMyNewsletter.bat« ab.
Danach kannst Du diese Datei mit einem Doppelklick als Trigger nutzen!
Wenn Du einen Zeitintervall haben möchtest, könnte das hier evtl für Dich einen Übergangslösung sein:
echo "Enter the time interval in hours:"
read INTERVAL
while true; do
RESPONSE=$(curl -o /dev/null -s -w "%{http_code}\n" http://www.meinshop.de/backend/Newsletter/cron)
echo "Response status code: $RESPONSE"
sleep $((INTERVAL * 60 * 60))
done
Oder mit Zeitintervall & Error LOG File:
#!/bin/bash
echo "Enter the time interval in hours:"
read INTERVAL
LOG_FILE="cron_log.txt"
while true; do
RESPONSE=$(curl -o /dev/null -s -w "%{http_code}\n" http://www.meinshop.de/backend/Newsletter/cron)
if [[ "$RESPONSE" != "200" ]]; then
DATE=$(date +"%Y-%m-%d %H:%M:%S")
ERROR_MSG="[$DATE] ERROR: HTTP status code $RESPONSE returned from http://www.meinshop.de/backend/Newsletter/cron"
echo "$ERROR_MSG"
echo "$ERROR_MSG" >> "$LOG_FILE"
fi
sleep $((INTERVAL * 60 * 60))
done
lieben dank an alle hier ist die Lösung, letzendlich von shopware support, für einen normalen cron job wir z.B. plesk Befehl ausführen:
- cd zum absoluten shopware verzeichnis
2 &&
- richtige PHP version… /opt/plesk/php/7.4/bin/php
- dann shopware.php /backend/Newsletter/cron
muster:
cd /absoluten pfad zum shopverzeichnis && /opt/plesk/php/7.4/bin/php shopware.php /backend/Newsletter/cron