Altdatenbestand

bork

Sehr aktives Mitglied
26. Januar 2007
839
99
Hallo,

laut Dokumentation ist es ja möglich den neuen Connector auch in Betrieb zu nehmen, wenn die JTL schon mit dem alten Connector in Gang war, d.h. sowohl der Shop als auch die JTL Daten enthalten:
Kategorie:JTL-Connector:Gambio ? JTL-Guide

Wir haben das ja so versucht und festgestellt, dass der Kundenimport einmal durchläuft, die Kunden aber dann nicht doppelt in der Wawi sind. Bei den Bestellungen ist das anders: Die werden ja wieder und wieder, mit jeder Synchronisation neu importiert bzw. der Connector versucht das und bricht dann ab.

Da der Vorschlag, Kunden und Bestellungen doch einfach im Shop zu löschen, für uns nicht in Frage kam, haben wir dann vom Support den Hinweis bekommen, man müsse die Tabelle jtl_connector_link mit Blinddaten befüllen, um so JTL Wawi vorzugaukeln, dass der Import schon erfolgt ist. Dazu dieser Hinweis zur Struktur der Daten: http://forum.jtl-software.de/presta...ten-bestell-import-verhindern.html#post485036
Da es dafür keine weiteren technischen Hilfen gab, haben wir nun auf eigene Kosten ein Script entwickelt, das unserer Ansicht Blinddaten generieren müsste:

Der Import von Altdaten wird damit verhindert, aber offenbar werden seitdem in der Wawi veränderte Produkte in Gambio nicht aktualisiert, sondern als neue Produkte angelegt, jedoch ohne Kategoriezuordnung (products_to_categories), so dass die Produkte nur in der Datenbank (products und products_description) und über die Suchfunktion zu finden sind, nicht aber im Admin oder im Frontend über die Kategorien. Gibt es da einen Zusammenhang? Wir haben auch zeitgleich die Connector-Version 1.5 in Betrieb genommen - gibt es damit Probleme?

Außerdem läuft der Connector jetzt recht lange - so 3-5 Minuten, unabhängig davon ob 2 oder 200 Datensätze übermittelt werden sollen. Ist das ein dauerhaftes Problem, das daran liegt, dass die jtl_connector_link nun 27.000 Datensätze beinhaltet, die alle vor jeder Synchronisation ausgelesen werden müssen? Das würde ja heißen, dass sich das Problem verschärft, je länger der Connector in Betrieb ist?

Gambio GX 2.6.1.0
JTL Conn 1.5
JTL Wawi 1.0.7.3

VG
Bork
 

bork

Sehr aktives Mitglied
26. Januar 2007
839
99
AW: Altdatenbestand

Ok, die fehlende Kategoriezuordnung und die Neuanlage von Produkten lag wohl am fehlenden Produkt-Mapping. Nachdem ich alle Produkte erneut aus dem Shop in die Wawi geholt habe, war das Mapping wieder hergestellt so dass die Produkt-Sync auch wieder läuft. Bleibt die Frage nach der steigenden Größe der Tabelle jtl_connector_link (jetzt nach Artikelimport über 30.000 Einträge) und nach der Performance-Frage...
 

elevennerds.de

Sehr aktives Mitglied
23. September 2015
1.215
188
AW: Altdatenbestand

Hallo,

ich hoffe für euch, dass dieses Script niemals aus dem Internet erreichbar sein wird, damit kann man nämlich sehr einfach eure Shop-DB übernehmen.

So programmiert man schon seit mindestens 10 Jahren nicht mehr.

MfG

Rene
 

bork

Sehr aktives Mitglied
26. Januar 2007
839
99
AW: Altdatenbestand

Hallo Rene,

hat einen .htaccess Schutz, daher keine Sorge :) Bin kein Programmierer, aber irgendwas muss man ja tun, wenn der Connector so von Haus aus solche Funktionen nicht mitbringt oder? Rein aus Interesse: Welche Probleme gibts? Prepared Statements kann ich nicht und mysqli auch nicht, aber die GET Parameter sind doch abgesichert oder? Wäre gut wenn du hier eine Verbesserung postest, damit andere User die ein bestehendes System aufrüsten wollen auf den neuen Connector auch ein Tool nutzen können.

So besser?
 

bork

Sehr aktives Mitglied
26. Januar 2007
839
99
AW: Altdatenbestand

oder so? Dann kann nix mehr passieren oder?

PHP:
<?php

require ('../includes/application_top.php');




if ($_GET) {
	$action = htmlentities($_GET['action'], ENT_QUOTES, 'UTF-8');
	
	if(!preg_match("/^[a-zA-Z0-9]+$/s",$action)) {
	echo 'Error: Nur Buchstaben und Zahlen erlaubt!';
	exit;
	} else {
	
		if($action == 'orders') {
		$orders_query = xtc_db_query("select * from orders");

			while($row = xtc_db_fetch_array($orders_query)) 
					{
					echo $row['orders_id'] . '</br>';
					$order_jtl = "insert into jtl_connector_link (endpointId, hostId, type) values ('" . $row['orders_id'] ."', '-1', '4')";
					mysql_query($order_jtl) or die(mysql_error());
					}
		}

		if($action == 'customers') {
		$customers_query = xtc_db_query("select * from customers");

			while($row = xtc_db_fetch_array($customers_query)) 
					{
					echo $row['customers_id'] . '</br>';
					$customer_jtl = "insert into jtl_connector_link (endpointId, hostId, type) values ('" . $row['customers_id'] ."', '-1', '2')";
					mysql_query($customer_jtl) or die(mysql_error());
					}				
		}
	}
}

?>
			<form name="update" action="jtl_setup.php" method="get">
			<input type="hidden" name="action" value="orders" id="action">
			<input type="submit" name="Submit" value="Bestellungen">
			</form>
			<form name="update" action="jtl_setup.php" method="get">
			<input type="hidden" name="action" value="customers" id="action">
			<input type="submit" name="Submit" value="Kunden">
			</form>
 

daniel.jtl

Moderator
12. März 2014
1.277
28
AW: Altdatenbestand

Bleibt die Frage nach der steigenden Größe der Tabelle jtl_connector_link (jetzt nach Artikelimport über 30.000 Einträge) und nach der Performance-Frage...
Auf einem halbwegs zeitgemäßen Webspace sollten auch Millionen von Einträgen hier keinerlei Probleme verursachen.
Wichtig ist lediglich dass auf allen Spalten der Mapping Tabelle (und auf den entsprechenden Primärschlüsseln der Shop-Daten, was jedoch hoffentlich der Fall sein sollte) ein Index liegt.
 

elevennerds.de

Sehr aktives Mitglied
23. September 2015
1.215
188
AW: Altdatenbestand

Hallo,

müsste passen, ich habe nur das mysql_query gesehen und mir die Augen gerieben. Jegliche Aufgaben mit Datenbanken bitte nur per PDO, obwohl es auch dort einige Probleme gibt (kein float, kaputtes NULL-Handling)

MfG

Rene
 

bork

Sehr aktives Mitglied
26. Januar 2007
839
99
AW: Altdatenbestand

Danke Rene!

Liebe Moderatoren, bitte den Code aus Beitrag 1 und 4 entfernen und auf den in Beitrag 5 verweisen (wenn der dann so in Ordnun ist), damit keiner Sicherheitsrisiken eingeht. Danke