Updaten nach Moduländerung verhindern

Gesperrt
Micha33
Beiträge: 37
Registriert: Fr 16. Jan 2004, 00:34
Wohnort: Berlin
Kontaktdaten:

Updaten nach Moduländerung verhindern

Beitrag von Micha33 » So 17. Jul 2005, 08:22

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

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Re: Updaten nach Moduländerung verhindern

Beitrag von Halchteranerin » So 17. Jul 2005, 08:59

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

emergence
Beiträge: 10645
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Re: Updaten nach Moduländerung verhindern

Beitrag von emergence » So 17. Jul 2005, 09:02

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....
*** make your own tools (wishlist :: thx)

Micha33
Beiträge: 37
Registriert: Fr 16. Jan 2004, 00:34
Wohnort: Berlin
Kontaktdaten:

Re: Updaten nach Moduländerung verhindern

Beitrag von Micha33 » So 17. Jul 2005, 09:17

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

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » So 17. Jul 2005, 21:54

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
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

Micha33
Beiträge: 37
Registriert: Fr 16. Jan 2004, 00:34
Wohnort: Berlin
Kontaktdaten:

Beitrag von Micha33 » Mo 18. Jul 2005, 08:05

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

Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Beitrag von Dodger77 » Mo 18. Jul 2005, 08:34

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

Micha33
Beiträge: 37
Registriert: Fr 16. Jan 2004, 00:34
Wohnort: Berlin
Kontaktdaten:

Beitrag von Micha33 » Mo 18. Jul 2005, 19:47

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

Gesperrt