Кто подкажет ответик: Делаю я цикл 20тыс раз. В нём

вызываю одну и ту же функцию


Yii::$app->db->createCommand("SELECT * FROM get_data($id)")->queryScalar();

Почему память всё больше и больше скушивается? Ведь никакие значения не используются и вообще, каждую итерацию разве не должно значение где-нибудь удаляться и скушиваться сборщиком мусора?

Если замерить, то например при 0 итерациях разница между memory_get_usage - 0, если 20 тысяч итеарций - 128 мегабайт, если больше итераций - ещё больше.
Как сделать так, чтобы можно было бесконечно (УСЛОВНО) крутить цикл с обращением к БД без разбухания памяти для php скрипта?

5 ответов

10 просмотров

а не проще базу попросить почитать и сгруппировать по id?

Можно оптимизировать по быстрому $command = Yii::$app->db->createCommand("SELECT * FROM get_data(:id)")->bindParam(':id', $id); foreach ($ids as $id) { $command->queryScalar(); }

Алексей-Шиманский Автор вопроса
... Афонин
а не проще базу попросить почитать и сгруппировать...

Не уверен...В целом, мне вообще все эти значения поотдельности надо в кэш сложить. Там вообще будет 9млн. записей и помимо текущей функции ещё две тяжёлые будут... Может быть да, в БД циклом бегать, сложить всё во временную таблицу и потом из неё всё сложить в кэш.

Алексей-Шиманский Автор вопроса
SiZE
Можно оптимизировать по быстрому $command = Yii::...

Да, думал об этом и ещё о кэшировании самого запроса, пока не пробовал

Алексей Шиманский
Да, думал об этом и ещё о кэшировании самого запро...

bindParam по рефералке принимает идентификатор, изменение значения автоматически отразится

Похожие вопросы

Обсуждают сегодня

if (user?.choseType === 'oneDay') { await ctx.reply( 'Добро пожаловать в команду «Магнита»! Правда, на один день ☺️ ', ); await ctx.s...
Kokni
1
Читаю сейчас [нет, уже больше не читаю!] курсовую о Булгакове, написанную, похоже, с помощью ChatGPT. Это удивительный психоделический опыт. Текст в основном написан в стиле б...
✨ Uni [🌊 В отпуске]
1
Это фейк @cruppto_newbot?
Antskup
13
всем салют сегодня утро заметил что бот не может отправлять фотки по url. ручками в браузере ссылка норм открывает фотки. падает ошибка 'Bad Request: failed to send message ...
Vasya Ivanov
9
ребят, привет. за какое время бот полученную заявку на вступление в группу может принять \отклонить? Помню речь была про 5 минут, сейчас как?
Роман Ромашин :)
10
Доброго времени суток. Правильно ли я понимаю, что с введением новой платежной единицы stars, я просто могу оставить текущую платёжку от Юкассы, которая выполняется на сайте с...
Prokhor Chulkov
7
вопрос: кто как решает вопрос с динамической подгрузкой скриптов для отдельных страниц с включенным turbo router?
Sergei Toroptsev
25
Добрый день! Не подскажете как к модели Категории Шопоголика добавить отношение Тейлора. Пробовал по документации, но не получается. Мб уже кто-то делал?
Николай Афанасенко
6
@veranikaEU получилось? Можно увидеть рабочий код?
Alex Kom
8
Сonst magicTgHTML = (text, entities) => { let processedText = text; let offsetShift = 0; entities.forEach(entity => { const { offset, length, type, url, ...
Андрей
1
Карта сайта