Seite 1 von 1
Updaten nach Moduländerung verhindern
Verfasst: So 17. Jul 2005, 08:22
von Micha33
Hi,
Gibt es eine Möglichkeit das neu generieren der Artikel in der con_code zu verhindern?
Nach einer Modifikation eines Modules (oder Layouts) werden ja alle Artikel, in welchen das Modul verwendet wird neu generiert, um die Änderungen zu übernehmen, richtig?
Seit einer Änderung auf der Seite eines Kunden ist die Systemlast des Servers quasi explodiert (load teilweise über 25) und ein flüssiger Aufbau der Seiten ist nun nicht mehr gewährleistet. Das der Server nicht sehr leistungsfähig ist, war zwar bekannt aber damit, dass es sich so auswirken würde, wurde nicht gerechnet.
Es geht jetzt um Schadenbegrenzung. Daher die Frage, ob sich die Update-Funktion irgendwie deaktivieren lässt.
Viele Grüße
Micha
Re: Updaten nach Moduländerung verhindern
Verfasst: So 17. Jul 2005, 08:59
von Halchteranerin
Micha33 hat geschrieben:Nach einer Modifikation eines Modules (oder Layouts) werden ja alle Artikel, in welchen das Modul verwendet wird neu generiert, um die Änderungen zu übernehmen, richtig?
Jein. So viel ich weiss, werden die erst dann neu generiert, wenn sie im Frontend aufgerufen werden. Und die wurden wohl kaum alle auf einmal aufgerufen, also wuerde ich die Ursache fuer die hohe Last woanders suchen (ich weiss allerdings nicht, wo ...)
Gruss
Christa
Re: Updaten nach Moduländerung verhindern
Verfasst: So 17. Jul 2005, 09:02
von emergence
Micha33 hat geschrieben:Gibt es eine Möglichkeit das neu generieren der Artikel in der con_code zu verhindern?
nein...
Micha33 hat geschrieben:Nach einer Modifikation eines Modules (oder Layouts) werden ja alle Artikel, in welchen das Modul verwendet wird neu generiert, um die Änderungen zu übernehmen, richtig?
falsch... es gibt im backend nur die vormerkung das contenido den code neu generieren soll... siehe con_cat_art -> createcode
nach aufruf der seite im frontend wird der entsprechende artikel in der con_code erzeugt. nicht vorher...
sieh dir mal die mandanten config.php an...
steht dort vielleicht ein parameter force auf true ?
dann wird bei jeden aufruf der entsprechende eintrag in der con_code erzeugt....
Re: Updaten nach Moduländerung verhindern
Verfasst: So 17. Jul 2005, 09:17
von Micha33
sieh dir mal die mandanten config.php an...
steht dort vielleicht ein parameter force auf true ?
Nein, hatte ich auch schon geschaut. force = 1 ist auskommentiert. Es wäre dann ja auch nicht gestiegene Serverlast seit der Modifikation des Moduls zu erklären.
Aber man könnte ja theoretisch das Feld createcode per update-query überall auf 0 setzen. Ist zwar keine feine Lösung aber das würde das neu erzeugen des Codes stoppen, oder?
Vielen Dank
Micha
Verfasst: So 17. Jul 2005, 21:54
von HerrB
Vermutlich schon, aber gibt es so viele Einträge mit einem anderen Eintrag? Sobald die Seite einmal neu erzeugt wurde, ist die Sache gegessen.
Was für eine Last produziert denn eigentlich die Änderung des Moduls an sich? Wenn die jetzt immer auftritt, würde ich da gucken...
Gruß
HerrB
Verfasst: Mo 18. Jul 2005, 08:05
von Micha33
Die Seite besteht aus über 2000 Artikeln und als ich das letzte mal geschaut hatte waren 800 davon noch nicht neu generiert.
Wie gesagt, die Änderung des Modules war unbedeutend. Es wurden keine funktionellen Sachen geändert.
Micha
Verfasst: Mo 18. Jul 2005, 08:34
von Dodger77
Micha33 hat geschrieben:Wie gesagt, die Änderung des Modules war unbedeutend. Es wurden keine funktionellen Sachen geändert.
Wird das Modul denn auf allen Seiten eingesetzt? Und die Änderungen müssen ja keine funktionalen sein um einschneidene Performanceeinbußen zu bringen, z.B.:
- Endlosschleifen
- nicht endende Rekursionen
Aber auch schon DB-Abfragen innerhalb von FOR- oder WHILE-Konstrukten können enorme Änderungen bringen, so dass der Server plötzlich nicht mehr klarkommt. Je nach Anzahl der Seitenaufrufe kann auch der Einsatz von mod_rewrite zu Performanceeinbußen führen, wenn die RewriteRules nicht ganz so günstig gewählt sind.
Ich würde wie HerrB auch auf die Änderungen am Modul tippen. Aber ein bißchen mehr Details (evtl. inkl. Link zum Anschauen) wären nicht schlecht um sich selbst ein Bild davon zu machen.
Gruß
Ingo
Verfasst: Mo 18. Jul 2005, 19:47
von Micha33
Hier das Modul vor der Änderung: Es geht darum die idcat der Wurzelkategorie eines Stammes zu erhalten um danach das Farbdesign in Form von Variablen zu ändern, bzw. dem Layout zu übergeben.
Code: Alles auswählen
$kategorien = array();
$pfad = array();
$db_Connect = new DB_Contenido;
$sql_kategorien = "SELECT a.idcat, a.parentid, b.name
FROM ".$cfg["tab"]["cat"]." a,
".$cfg["tab"]["cat_lang"]." b
WHERE a.idcat = b.idcat AND
b.idlang = ".$lang." AND
a.idclient = ".$client."
ORDER BY a.idcat;";
//Alle Kategorien mit ihrer Elternkategorie und Namen im Array speichern!
$db_Connect->query($sql_kategorien);
while ($db_Connect->next_record()) {
$kategorien[$db_Connect->f('idcat')] = array($db_Connect->f('parentid'), $db_Connect->f('name'));
}
//Pfad suchen (von 0 (=aktuelle Kategorie) bis x (=Root))!
$aktKat = $idcat;
do {
$pfad[] = $aktKat;
$aktKat = $kategorien[$aktKat][0];
}
while ($aktKat != 0);
$lastKat = $pfad[count($pfad)-1];
$rootName = $kategorien[$lastKat][1];
//echo $rootName;
if ($rootName == "Race Categories") {
$bgcolor = "#800000";
$bgcolorHL = "#C74242";
$bgimage = "../../ImagesLayout/verlauf_race.gif";
$pageid=0;
}
else if ($rootName == "Teams & Pilots") {
$bgcolor = "#33537C";
$bgcolorHL = "#6E90C4";
$bgimage = "../../ImagesLayout/verlauf_teams.gif";
$pageid=1;
}
else if ($rootName == "Galleries") {
$bgcolor = "#986596";
$bgcolorHL = "#C28CBF";
$bgimage = "../../ImagesLayout/verlauf_galerie.gif";
$pageid=2;
}
else if ($rootName == "Cars & Tuning") {
$bgcolor = "#1E9B01";
$bgcolorHL = "#84C66A";
$bgimage = "../../ImagesLayout/verlauf_cars.gif";
$pageid=3;
}
else if ($rootName == "Lifestyle") {
$bgcolor = "#FF963B";
$bgcolorHL = "#FFC68C";
$bgimage = "../../ImagesLayout/verlauf_lifestyle.gif";
$pageid=4;
}
else if ($rootName == "E-Cards") {
$bgcolor = "#01A0B8";
$bgcolorHL = "#00BDD9";
$bgimage = "../../ImagesLayout/verlauf_ecards.gif";
$pageid=5;
}
Hier die neue Version. Es werden nun nicht mehr die Kategorienamen abgefragt, sondern direkt die idcat's.
Code: Alles auswählen
$kategorien = array();
$pfad = array();
$db_Connect = new DB_Contenido;
$sql_kategorien = "SELECT a.idcat, a.parentid, b.name
FROM ".$cfg["tab"]["cat"]." a,
".$cfg["tab"]["cat_lang"]." b
WHERE a.idcat = b.idcat AND
b.idlang = ".$lang." AND
a.idclient = ".$client."
ORDER BY a.idcat;";
//Alle Kategorien mit ihrer Elternkategorie und Namen im Array speichern!
$db_Connect->query($sql_kategorien);
while ($db_Connect->next_record()) {
$kategorien[$db_Connect->f('idcat')] = array($db_Connect->f('parentid'), $db_Connect->f('name'));
}
//Pfad suchen (von 0 (=aktuelle Kategorie) bis x (=Root))!
$aktKat = $idcat;
do {
$pfad[] = $aktKat;
$aktKat = $kategorien[$aktKat][0];
}
while ($aktKat != 0);
$lastKat = $pfad[count($pfad)-1];
$rootName = $kategorien[$lastKat][1];
//echo $idcat;
//echo $rootName;
if ($lastKat== "24") {
$bgcolor = "#800000";
$bgcolorHL = "#C74242";
$bgimage = "../../ImagesLayout/verlauf_race.gif";
$pageid=0;
}
else if ($lastKat== "35") {
$bgcolor = "#33537C";
$bgcolorHL = "#6E90C4";
$bgimage = "../../ImagesLayout/verlauf_teams.gif";
$pageid=1;
}
else if ($lastKat== "36") {
$bgcolor = "#986596";
$bgcolorHL = "#C28CBF";
$bgimage = "../../ImagesLayout/verlauf_galerie.gif";
$pageid=2;
}
else if ($lastKat== "37") {
$bgcolor = "#1E9B01";
$bgcolorHL = "#84C66A";
$bgimage = "../../ImagesLayout/verlauf_cars.gif";
$pageid=3;
}
else if ($lastKat== "38") {
$bgcolor = "#FF963B";
$bgcolorHL = "#FFC68C";
$bgimage = "../../ImagesLayout/verlauf_lifestyle.gif";
$pageid=4;
}
else if ($lastKat== "39") {
$bgcolor = "#01A0B8";
$bgcolorHL = "#00BDD9";
$bgimage = "../../ImagesLayout/verlauf_ecards.gif";
$pageid=5;
}
Viele Grüße
Micha