Jump to content
xt:Commerce Community Forum

Cronjob für Artikelimport


Recommended Posts

Hallo zusammen, ich habe nun schon einiges ausprobiert und nichts hat wirklich geklappt, deshalb hoffe ich jemand von euch kann mir weiterhelfen:

Mein Ziel ist es das ich automatisch die importlisten unsere Lieferanten in Veyton 4.0.16 importieren lassen kann.

Dafür habe ich bis jetzt einen cronjob über das Control Panels unseres Hosters eingerichtet, welcher ein PHP-Script called das die listen in "veyton-taugliche" CSV Dateien verwandelt. Das klappt soweit auch ganz gut.

Am Ende meines Scripts war bis ahnhin (bevor ich es cronjobtauglich gemacht habe) ein curl-Aufruf des Veyton-Cronjob-Imports ala :


$cron = curl_init($cronjobpath . "/cronjob.php?api=csv_import&id=xxxx");

curl_setopt($cron, CURLOPT_RETURNTRANSFER, true);

curl_exec($cron);

curl_close($cron);		

leider scheint dies per cronjob so nicht ausführbar zu sein. Deshalb dachte ich mir: ok dann richte ich es eben als direkten cronjob über wget ein:

/usr/local/bin/wget MEINE_SHOP_URL/cronjob.php?api=csv_import&id=xxxx

die scheint aber leider auch nicht zu funktionieren. In dem Mailbericht den ich vom CronDeamon daraufhin erhalte, scheint es als ob die id nicht mitgegeben wurde

--2013-05-23 15:30:05--  http://besttrading.ch/cronjob.php?api=csv_import

Resolving MEINE_SHOP_URL (MEINE_SHOP_URL)...

Mache ich evtl. etwas Falsch oder ist der Import gar nicht per cron ankickbar? Weiss evtl. jemand bescheid und kann mir hier aushelfen?

Edit: Anrmerkung: Wenn ich mein script über den Browser aufrufe und durchlaufen lasse, funkioniert der erste hier gepostete codeblock perfekt.

Link to comment
Share on other sites

Hallo,

bei wget muss man auf die Sonderzeichen achten, da die Shell in diesem Fall das "&" anderes verarbeitet als gewünscht. Daher sollte die URL in Hochkommas gesetzt werden.

wget "MEINE_SHOP_URL/cronjob.php?api=csv_import&id=xxxx"[/CODE]

Viele Grüße,

Stefan

Link to comment
Share on other sites

hallo df:bug, vielen dank für dein Antwort. Das hat mich zumindest schonmal einen Schritt vorwärts gebracht und der import wird getriggert.

Allerdings wird scheinbar nur die erste Iteration durchlaufen und somit nur gerade 100 Produkte importiert. Ist da evtl. jemandem eine Möglichkeit bekannt das alle Produkte importiert werden und nicht nur gerade 100?

Link to comment
Share on other sites

Hallo,

was passiert, wenn der Werte von "Datensätze pro Durchgang" zum Beispiel auf 50, 25 oder 10 gesetzte wird?

Ein Blick in die error.log des Webservers bringt ggf. weitere Informationen/Fehlerquellen.

Der Import/Export ist Abhängig von max_execution_time, php_memory_limit, max_input_time etc.

Viele Grüße,

Stefan

Link to comment
Share on other sites

datensätze pro durchgang, execution time und co haben keinen wirklichen Einfluss (wenn ich 50 für "Datensätze pro Durchgang" einstelle werden eben nur 50 Produkte importiert), zumal der Aufruf des Imports über den Browser tadellos funktioniert.

Dafür habe ich aber einen workaround gefunden mit curl: In meinem Script das die Listen der Lieferanten Veyton-Tauglich macht zähle ich mit, wieviele Einträge in die CSV Datei gemacht werden.

Daraus habe ich dann einfach das hier entwickelt:


	$intervals = ceil($prodImports / 100);

	$baseCronUrl = $cronjobpath . "/cronjob.php?api=csv_import&id=".$supplier."Import";


	for($i = 0; $i < $intervals; $i++){

		$lower = $i*100;

		$upper = ($i+1)*100;


		$cron = curl_init($baseCronUrl . "&limit_lower=".$lower."&limit_upper=".$upper);

		curl_setopt($cron, CURLOPT_RETURNTRANSFER, true);

		curl_exec($cron);

		curl_close($cron);	

	}

das scheint so wunderbar zu funktionieren.

Evtl. Hilfts ja jemandem ;-)

Edit: Anmerkung: $prodImports ist die Anzahl der Produkte, welche in die CSV Datei eingefügt wurde.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...