У меня есть фрагмент, который напоминает следующее:
while (true) {
$myObject = new Class();
$myOtherObject = $myObject->getSomeOtherObj();
...
$myArray = [1, 2, 3];
...
sleep(1); //Sleep at the end, to save CPU.
}
Этот фрагмент должен работать как служба демона, но у меня много проблем с этой работой.
Проблема: каждая итерация увеличивает использование памяти процесса. Как будто на каждой новой итерации создается экземпляр $myObject, но предыдущий остается в памяти и т.д.
Я пробовал:
- to
unsetвсе переменные в конце цикла (прямо передsleep()). - Установка всех переменных в
null. - инкапсулируя их в отдельную функцию (
while (true) { doThis(); }) - вызов вручную
gc_collect_cycles()
Ни один из них не работал для уменьшения использования памяти.
Я не знаю, как заставить всю память освободиться.