Василий М.
Новичок
Есть код, с которым никак не могу справиться. Ужк и так и эдак. Ушел от тяжелых запросов, все равно Allowed memory size. Не могу понять, почему память заканчивается?
у меня лишь два массива, в одном 1000 в другом 300 элементов (int).
в базу вставляются вариации из этих двух массивов. Ну и подзапрос легкий.
На каком этапе тут съедается вся память? Обычный же insert в циклах.
PHP:
$db->query('TRUNCATE TABLE `advert-region_count`');
$categories = $db->query('SELECT `id` FROM `category`')->fetch_assoc_array();
$regions = $db->query('SELECT `id` FROM `user-region`')->fetch_assoc_array();
for ($i=0; $i < count($categories); $i++) {
for ($j=0; $j < count($regions); $j++) {
$db->query('
INSERT INTO `advert-region_count`
SET `id_region` = ?i,
`id_category` = ?i,
`count` = (SELECT count(*) FROM `advert` AS `a` INNER JOIN `user` AS `u` on `a`.`advert_id_user` = `u`.`id`
WHERE `a`.`advert_place_region` = ?i
AND `a`.`advert_category` = ?i
AND `a`.`advert_active` = 1
AND (`u`.`id` > 0 and `u`.`user_active` = 1 OR `u`.`id` = -1))',
$regions[$j]['id'], $categories[$i]['id'], $regions[$j]['id'], $categories[$i]['id']);
}
}
в базу вставляются вариации из этих двух массивов. Ну и подзапрос легкий.
На каком этапе тут съедается вся память? Обычный же insert в циклах.