используя gc_collect в выражении foreach - PullRequest
1 голос
/ 20 ноября 2011

в моем коде есть оператор foreach. каждый шаг вычисляет огромные данные и переходит к следующему шагу. я запускаю этот код и собираюсь делать свои работы, когда я возвращаюсь и читаю журнал, вижу ошибку утечки памяти. так что читайте php.net и найдите, что gc_collect_cycle подходит для этого случая. добавить эти строки в последнюю строку блока foreach:

echo "Check GC enabled : " . gc_enabled();
echo "Number of affected cycles : " . gc_collect_cycles();

вывод такой:

Check GC enabled : 1
Number of affected cycles : 0

почему цикл существует, но затронутые циклы равны 0?

1 Ответ

1 голос
/ 20 ноября 2011

В этом случае цикл не означает цикл-оператор (например, foreach). Циклы означают циклические ссылки в коде. Смотри http://php.net/manual/en/features.gc.collecting-cycles.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...