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.