PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [Bug] Fehler nach Masterupdate GX4.0.0.0 GMSEOBoost-repair() Endlosschleife



kostja_j
26.03.2020, 23:42
Hallo,

da ich kein Zugang zu offiziellen Gambio-Forum habe. Erstelle ich ein Nachricht hier.

Beim Update von 3.15 auf 4.0.0.0 kam bei Produktänderung eine Endlosschleife. Lange habe ich am Server und DB gesucht und ausprobiert. Weil an mehreren Umgebungen den Shop teste. Aber der Fehler fand ich jedoch in der Software.

Folgender SQL-Befehl wurde endlos in einer while-Schleife ausgeführt in der Funktion GMSEOBoost->repair():


SELECT DISTINCT a.products_id, a.gm_url_keywords FROM products_description a LEFT JOIN products_description AS b ON (a.gm_url_keywords = b.gm_url_keywords) WHERE a.products_id != b.products_id AND a.language_id = '2' AND b.language_id = '2' ORDER BY a.products_id


gm_url_keywords als Ausgabe kam z.B.:

Tisch-Holz
tisch-holz
.....

d.h. der Shop unterscheider nicht zwischen Groß und Kleinschreibung.

Der Fehler in der DB ist wohl seit GX2 bei mir mitgewandert, da dieselben Datenbankinhalte. Entdeckt aber in GX4 wegen einer Endlosschleife.

Die Klasse GMSEOBoost_ORIGIN sollte denoch genauer angeschaut werden.

meine Lösung dazu:
in der DB gm_url_keywords in Tisch-Holz-123 geändert, sodass nur UNIQUE werte da sind. Und es lief wieder.

Viele Grüße
Konstantin

KlausK
27.03.2020, 12:49
Grundsätzlich ist das Problem bereits bekannt: https://tracker.gambio-server.net/issues/66039

kostja_j
27.03.2020, 13:22
aja. Vielen Dank für den Hinweis.


aber warum das in diesem Fall gescheitert ist, entzieht sich bislang meiner Kenntnis.

naja, die haben in der Funktion repair() while-Schleifen von DB-Abfragen verschachtelt. While in while in while. In meiner Zeit als Programmierer vor vielen vielen Jahren war dies strikt verboten und durften z.B. foreach-Schleifen genutzt werden. Die Funktion repair ist an sich auch noch viel zu groß geworden.



$t_new_url_keyword = preg_replace('/(.+?)(-[0-9]+)$/', "$1", $t_gm_url_keywords);


das ist in der Schleife. Dafür existiert bereits aber eine Funktion. Ich kann mir erinnern dass ich auch was gebastelt habe in GX2 um doppelte "--" in URLs zu beseitigen.