Краткий ответ: детализация невозможна.
Тем не менее, я обнаружил, что проблема в том, что я разбил код внутри цикла на подфункции.Затем я прокомментировал их все, чтобы только проверить, что было следом зацикливания, ничего не делая.Затем я раскомментировал функцию за функцией, пока не нашел проблемную.
Как только у меня появилась проблемная функция, я снова сделал тот же процесс: прокомментируйте все в ней, затем раскомментируйте, пока не найдете проблемнуюкода.
Наконец-то я обнаружил, что вызываю функцию, которая использует create_function
из PHP.Многие люди «жалуются» на «утечки памяти» из-за этой функции.Проблема заключается не в утечке памяти, а в том, что если вы вызовете create_function
в цикле, он действительно создаст столько функций, сколько вы выполняете цикл.Чтобы избежать этого, я нашел эту концепцию, чтобы избежать повторного создания функции тысячи раз.
<?php
global $my_func;
if (!isset($my_func)) {
$my_func = create_function($args, $code);
}
$my_func();
?>
Адаптация кода для обеспечения создания функции только после того, как проблема решена.Весь сценарий теперь занимает всего 8 МБ памяти вместо того, чтобы ломаться после перебора более 128 МБ.