остановить PHP, а циклы и MySQL запрашивают так много памяти? - PullRequest
2 голосов
/ 06 июня 2011

Я заметил, что при многократной работе с большим количеством данных в php / mysql использование памяти браузерами увеличивается очень быстро.

например, запуск Firefox 4, одна вкладка, открытая только с приложением, которое я тестирую, в настоящее время использует более 800 МБ оперативной памяти.

Тестирование включало многократную загрузку более 500 КБ из mySQL через PHP во время циклов при обновлении страницы или при вызове ajax. Я предполагаю, что это вызывает наращивание памяти?

Есть ли способ уменьшить это?

Ответы [ 2 ]

1 голос
/ 06 июня 2011

Если вы возвращаете лотов записей из MySQL через ajax, то да, это может легко привести к увеличению потребления памяти в вашем браузере.

В зависимости от вашего браузера и его реализации Javascript у вас также могут быть утечки памяти - это означает, что даже после обновления страницы часть памяти, выделенная предыдущей страницей, все еще используется. Только закрытие браузера, вероятно, излечит это.

1 голос
/ 06 июня 2011

Анализируйте меньше данных (и отправляйте меньше HTML), это единственное решение, использующее меньше памяти

В любом случае, чтобы проверить использование памяти, вы можете использовать memory_get_usage();

Отвечая на заголовок вашего вопроса, чтобы остановить цикл

while($r=mysql_fetch_*($query)) {
    if (memory_get_usage()>YOUR_LIMIT_BYTE_HERE)  {
        echo 'red alarm here';
        break;
    }

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