Projekt

Allgemein

Profil

GX-Bug #65698

Von Timo Backhaus vor fast 5 Jahren aktualisiert

Fehlermeldung beim Aufruf einer Artikeldetailseite mit extrem vielen Kombinationen: 

 Allowed memory size of 268435456 bytes exhausted (tried to allocate 67108872 bytes) in hostkraft.de/httpdocs/system/classes/properties/PropertiesDataAgent.inc.php on line 529 


 ------------------------------------------------------------------------------------------------------------------------------------------ 


 system/classes/properties/PropertiesDataAgent.inc.php 

 ~~~ php 
 public function get_values_by_combis_ids($p_combis_is_array, $p_select_properties=false) 
 ... 
 $t_query = 'SELECT DISTINCT <-- hinzufügen 
 ... 
 $t_query = 'SELECT DISTINCT <-- hinzufügen 
 ... 
 $t_values_ids_array = array_unique($t_values_ids_array); <-- entfernen 
 ... 
 ~~~ 

 Durch das Distinct läuft der Speicher nicht mehr voll - array_unique ist dadurch unnötig. 


 ------------------------------------------------------------------------------------------------------------------------------------------ 


 

 system/classes/properties/PropertiesControl.inc.php 

 ~~~ php 
 public function get_available_properties_values_by_values($p_products_id, $p_selected_values) 
 {     
         if(count($p_selected_values) == 0) 
         { 
             // return all value ids 
             $t_values_ids_array = array(); 
             $sql = 'SELECT DISTINCT properties_values_id FROM products_properties_index WHERE products_id = "' . (int)$p_products_id . '"'; 
             $result = xtc_db_query($sql); 
             while($row = xtc_db_fetch_array($result)) 
             { 
                 $t_values_ids_array[] = $row['properties_values_id'];     
             } 
             return $t_values_ids_array; 
         } 
 .... 
 ~~~ 

 Wenn keine ausgewählten Eigenschaften übergeben werden, dann müssen grundsätzlich alle Eigenschaftswerte angezeigt werden. Der Umweg über die Kombinationen ist in diesem Fall hinfällig, sodass eine Rückgabe aller value_ids aus der Index Tabelle ausreicht. Der initiale Aufruf der Produktdetailseite reduziert sich dadurch z.B: von 6 Sekunden auf 0,3 Sekunden.

Zurück