﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	blockedby	blocking
2399	Performance-Verbesserung auch für xtcCheckSpecial()	noRiddle	somebody	"In der Preisklasse wird der return-Wert der diversen Funktionen ''xtcCheck...()'' schön mittels static Variablen ge-cache-t. Leider nicht bei ''xtcCheckSpecial()''.
Wenn man z.B. in der Box last_viewed, bei den also_purchased oder im Warenkorb Artikel hat die in einem oder gar mehreren der Genannten ebenfalls vorkommen wird die Funktion mehrfach ausgeführt.
Das ließe sich jedoch auch wunderbar cache-n, indem man aus ''$special_price'' ein Array macht mit jeweils dem Schlüssel der Produkt-ID ($pID).

Vielleicht so:
{{{
function xtcCheckSpecial($pID) {
    static $special_price;
    if(!isset($special_price)) {
      $special_price = array();
    }
    
    $this->flagSpecial = false;
    if ($this->cStatus['customers_status_specials'] == '1') {
      if(!isset($special_price[$pID])) {
        $special_price[$pID] = 0;
        $product_query = xtc_db_query(""SELECT *
                                         FROM "".TABLE_SPECIALS.""
                                        WHERE products_id = '"".(int)$pID.""'
                                              "".SPECIALS_CONDITIONS);
        if (xtc_db_num_rows($product_query) > 0) {
          $product = xtc_db_fetch_array($product_query);
          $this->flagSpecial = true;
          
          $product = $this->priceModules->CheckSpecial($product, $pID);
        
          $special_price[$pID] = $product['specials_new_products_price'];
        }
        
        $special_price[$pID] = $this->priceModules->CheckSpecialPrice($special_price[$pID], $pID);
      }
      
      return $special_price[$pID];
    }
  }
}}}

Da ''$this->flagSpecial'' nirgends benutzt wird habe ich das in meinem Schnellschuß-Beispiel mal unberührt gelassen.
Wenn das zukünftig verwendet werden sollte müsste es in der Funktion anders behandelt werden.

Gruß,
noRiddle

"	Aufgabe	closed	normal	modified-shop-2.0.8.0	Shop	2.0.7.2	fixed				
