привет. мучаюсь с catalog/model/catalog/category.php.
пишет Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 35 bytes) in /home/p/*убрал*/*убрал*/public_html/catalog/model/catalog/category.php on line 31 пишет на сервере, локально медленно, но проходит.
в нутри category.php есть такой запрос
SELECT * FROM " . DB_PREFIX . "category c
LEFT JOIN " . DB_PREFIX . "category_description cd
ON (c.category_id = cd.category_id)
LEFT JOIN " . DB_PREFIX . "category_to_store c2s
ON (c.category_id = c2s.category_id)
WHERE
cd.language_id = '" . (int)$this->config->get('config_language_id') . "'
AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "'
AND c.status = '1'
ORDER BY c.parent_id, c.sort_order, cd.name
если убрать ORDER BY c.parent_id, c.sort_order, cd.name, выполниться быстрее
делал что написано в
http://opencartsoftware.blogspot.com/2013/02/opencart_24.html
http://opencartsoftware.blogspot.ru/2013/02/opencart.html
не помогло.
суть такая, сначала извлекаются в php все категории а потом ведется работа с ними, а у меня из 16тыс с чем то.
о кэшировании я думал, но для этого надо что бы прошел хоть один запрос)) кстати, кэширования там нет, пришлось добавить:
$data = $this->cache->get('allCategories');
if($data === null) {
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category c
LEFT JOIN " . DB_PREFIX . "category_description cd
ON (c.category_id = cd.category_id)
LEFT JOIN " . DB_PREFIX . "category_to_store c2s
ON (c.category_id = c2s.category_id)
WHERE
cd.language_id = '" . (int)$this->config->get('config_language_id') . "'
AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "'
AND c.status = '1'
");
//ORDER BY c.parent_id, c.sort_order, cd.name
foreach ($query->rows as $row) {
$data['by_id'][$row['category_id']] = $row;
$data['by_parent'][$row['parent_id']][] = $row;
}
$this->cache->set('allCategories', $data);
}
вуду опенкарта, призываю вас помочь чем магете, совсем уж силушки закончились, спасибо