Import mit Cron funktioniert nicht mehr

Hallo,

leider funktioniert seit September der Import von einer Lagerbestandsdatei im csv. Format nicht mehr. Im Import/Export Advanced Plugin habe ich ein Import Profil angelegt und diesen Namen zwischen den Punkten bei der Importdatei… Es wird beim Aufruf des Cron über „/backend/SwagImportExportCron/cron“ der Fehler „503 Service Unavailable“ ausgegeben. Die Datei ist nicht sehr groß und selbst wenn ich eine Datei mit nur 900 Zeilen hochlade kommt der Fehler. Bei 200 Zeilen läuft der Import durch. Der Fehler ist möglicherweise seit dem Update auf Version 5.2.6 da. Ich kann es leider nicht mehr nachvollziehen. Laut dem Log hatte gab es bis mitte September keine Probleme und der Import via Cron lief selbst mit Dateien über 7000 Zeilen ohne Fehler immer durch, mehrmals am Tag. Seit Mitte September jedoch (ich glaube da wurde das Update gemacht) geht der Cron nicht mehr. Wenn ich die Importdatei per Hand im Import/Export Advanced Plugin mit meinem Profil reinlade dann läuft der Import ohne Probleme durch, selbst bei über 10000 Zeilen.

Leider finde ich den Fehler trotz langer Suche nicht…Vielen Dank

Generell kann ich dir die Empfehlung geben, den Import über einen CLI-Befehl auszuführen. Das kann man mit einem Shellscript automatisieren, falls dir SSH und Cronjobs in deinem Hostingpaket zur Verfügung stehen. Das belastet den Apache nicht und es gibt meist auch keine Laufzeitbeschränkung.

http://community.shopware.com/Import/Export-Grundmodul_detail_1769.html
http://community.shopware.com/Cronjobs_detail_1102.html

 

Hallo,

 

ja Cronjobs und SSH Zugang habe ich. Es ist ein premium Hostingpaket von all-inkl. Wie würde denn für einen csv Import mit Profil das script aussehen? Einfach den Cron (

 php shopware.php SwagImportExport/cron) über php anstoßen und die csv in den import/export ordner legen? Vielen Dank

Nein, du musst die SW-Konsole nutzen:

php bin/console sw:importexport:import -f"CSV" -p"Profilname" /Pfad/zur/datei

 

Also wird mit “php bin/console sw:importexport:import -f"CSV” -p"Lagerupdate" /files/import_cron/" in einem Shellscript das Lager ausgeführt? Dieses .sh Schript lasse ich dann per Cron anstoßen in dem folgendes php Script ausgfeührt wird? “<?php
exec(”/bin/bash/shopware/lager.sh  2>&1", $out, $result);
echo “Returncode: " .$result .”
";
echo “Ausgabe des Scripts: " .”
";
echo "

"; print\_r($out);
 ?\>"

Meinst du “in dem” oder “indem”?

Auf meinem Server ist das etwas anders, ich bin bei Domainfactory. Ich hab einen Ordner der heßt wawisync, der liegt außerhalb meines Webroots, ist also über den Webserver nicht erreichbar. Da hinein legt ein andereres Script jede Stunde eine CSV-Datei mit aktuellen Lagerbeständen aus meiner Wawi. Der Import funktioniert über ein Bash-Shellscript (.sh), das wird über das Hosting-Konfigurationsmenü einmal stündlich aufgerufen. Und darin steht einfach nur: 

#!/bin/bash
cd /pfad/zum/shopware/verzeichnis/ && /usr/bin/env -i /usr/local/bin/php7-70STABLE-CLI -d zend_extension=/usr/local/lib/php_modules/7-70STABLE/ioncube_loader_lin_7.0.so bin/console sw:importexport:import -p "profilname" /pfad/zum/ordner/wawisync/csv-dateiname.csv

Das sieht auf den ersten Blick etwas wüst aus, da sind zwei Befehle miteinander kombiniert. Erstmal wird mit einem absoluten Pfad in den Shopware-Ordner navigiert, das mach ich deshalb, damit man das Script bei Bedarf verschieben kann und es immernoch funktioniert. Danach wird die PHP-Installation aufgerufen, man könnte auf der Konsole auch einfach nur php eingeben aber bei Domainfactory kann man auf die Art auf verschiedene PHP-Versionen zugreifen, ich nehme in dem Fall hier PHP7 in der CLI-Version. Danach kommt ein Teil, der mir den Ioncube-Loader zusätzlich mit einbindet, um Kompatibilitätsprobleme zu vermeiden, da kommt es darauf an, wo das Loader-Modul bei deinem Hoster liegt. Danach wird wie oben beschrieben der Import aufgerufen, mit Angabe des Profils und Pfadangabe zur CSV-Datei.

In meinem Shop sind ca. 150 Produkte drin und vom Aufruf über Cron bis zum erfolgreichen Eintrag im Import-Log dauert es nie länger als ca. 6 Sekunden.

https://wiki.ubuntuusers.de/Shell/Bash-Skripting-Guide_für_Anfänger/