У меня есть фрагмент, который напоминает следующее:
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()
Ни один из них не работал для уменьшения использования памяти.
Я не знаю, как заставить всю память освободиться.