Mailinglisten-Archive |
Hallo allerseits, ich habe da ein Performanceproblem! Für eine recht komplexe Shop-Lösung benötige ich zur Bestimmung des Preises eine Reihe von DB-Abfragen. Sind ein bis zwei Artikel in meinem Warenkorb, so ist die Performance ok. Sobald aber die Anzahl der Artikel nach oben geht (sagen wir: 5), benötigt PHP holen und berechnen der Preise sage und schreibe drei Sekunden. Wie schon gesagt, es werden mehrere DB-Abfragen pro Artikel getätigt. An der DB_Struktur kann ich nichts ändern, die ist fest vorgegeben. Was mir allerdings auffiehl ist die Tatsache, daß in der Zeit, wo die Daten berechnet/geholt werden, der postmaster-Prozeß nur 4% CPU Zeit verbrauchte, der httpd (und damit php) aber knapp 95%. Kann es sein, daß dies gar kein DB-Problem ist, sondern einfach nur eine Ineffizienz im PHP? Ich arbeite ziemlich viel mit Klassen. Z.B. hat die Warenkorbklasse ein Array von Itemklassen. Diese Items werden dann in die Berechnungen gesteckt und, da man nicht über $Basket->Items[1]->ProductId auf die einzelnen Items zugreifen kann. Ist die Berechnung für ein item erfolgt, so wird es in das Array zurückkopiert - reichlich Ineffizient. Gibt es eine Möglichkeit, sich eine Referenz auf ein Objekt zu holen? Wenn ich ein $Item = $Basket->Items[1]; schreibe, wird ja immer die ganze Klasse kopiert. Ein $Item = &$Basket->Items[1]; (in Anlehnung an Referenzen in Funktionen) wäre wesentlich effizienter. Vielen Dank Florian Baumert \\|||// | | (.) (.) ===================oOO==(_)==OOo========================= ! Florian Baumert ! ? Feldbergstr 44 ? ! D-61140 Oberursel ? ! Tel.: 0172 59 35 0 55 ! ? ===================================================== ? ! baumert_(at)_plt.de www.plt.de ! =========================================================
php::bar PHP Wiki - Listenarchive