2013-02-17 3 views
0

Мое веб-приложение делает много POST и GET-вызовов через AJAX для моих PHP-скриптов. Я заметил, использование памяти моего сервера достигает довольно низкий уровень после вызова моих сценариев при экспорте в PDF/Excel, поиск, вставка/обновление/удаление и т.д.Память PHP Сбрасывается при использовании exit()?

Ни один из моих PHP скриптов не заканчиваются exit() или die(). Может ли это вызвать проблему с памятью? Если бы я должен был добавить exit() или die() в конце каждого сценария, это очистит память, которая использовалась только этим сценарием?

+0

, что ЛИЭС вы используете для экспорта PDF и Excel - Я подозреваю, что те, что виновники более вероятно, чем сам PHP. – Spudley

+0

Я использую TCPDF для экспорта в PDF ... Я не использую lib для экспорта Excel – FastTrack

+0

PHP уже очищает используемую память при выходе из сценария. просто потому, что у вашего кода нет вызовов exicity exit() или die(), это не значит, что сервер волшебным образом его запускает. –

ответ

1

Я не думаю, что exit() или die() будет иметь значение.

Пожалуйста, убедитесь, что вы бесплатно используете ресурсы базы данных (результирующие наборы, соединения и т. Д.). Кроме того, рассмотрите все расширения, которые вы используете, и убедитесь, что ни у кого из них не обнаружены ошибки в отношении утечек памяти, особенно если вы используете экзотические расширения.

Если вы находитесь на Linux, и ваш сервер не заменяет на диске, даже если «свободная память» «низкая», это может быть связано с кэшированием диска. В этом случае все в порядке. См .: linuxatemyram.com.
BTW, где вы получаете информацию о свободной памяти?

+0

LOL ... люблю этот сайт, и это действительно имеет смысл. Я думал, что мой «свободный» баран был в 16 МБ, когда на самом деле, после прочтения этого сайта, я вижу, что у меня все еще есть 360 МБ бесплатно. Я использую команду 'free -m', чтобы увидеть мое текущее использование – FastTrack

+0

Я принял этот ответ, так как он позволил мне понять, насколько я новичок в Linux, и что у меня действительно нет проблемы с памятью, вызванной PHP! Большое спасибо! – FastTrack

3

exit и die в основном такие же, как и до конца файла. Разрушители запущены, уровни ob_start размыты и закончены, и все функции выключения запускаются.

В конце любого процесса PHP процесс завершается так же, как любая другая программа. Не осталось памяти.

2

Это не проблема с PHP, ее функция Apache.

Когда apache запускает новый процесс обработки вашего запроса, он не сразу распоряжается ресурсами после того, как ваш запрос обработан, вместо этого он остается доступным для любых возможных будущих запросов.

Если вы используете команду 'top', вы увидите несколько запущенных процессов apache.

Читайте об этом здесь: http://abdussamad.com/archives/169-Apache-optimization:-KeepAlive-On-or-Off.html

Смежные вопросы