Как мне узнать, сколько памяти / ресурсов использует мой php-скрипт? - PullRequest
8 голосов
/ 25 июля 2010

Привет, ребята. Я отлаживаю свое приложение здесь и, в основном, в двух словах - приложение вымирает на моем онлайн-сервере или, возможно, его сервер вымирает.Но я проверил это приложение на трех разных серверах, и все они показали схожие результаты, приложение будет работать некоторое время, но внезапно, как только я буду открывать все больше и больше запросов, я получу сетевую ошибку, или сайт не сможетload.

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

Или это потому, что я размещаю его на технически общем хосте?Стоит ли искать специализированный хостинг для размещения приложения?В моем приложении много сложных запросов к базе данных и запросов ajax.

Ответы [ 2 ]

10 голосов
/ 25 июля 2010

Что касается проверки того, сколько памяти использует ваш скрипт, вы можете периодически вызывать memory_get_usage(true) в точках вашего кода, чтобы определить, какие части вашего скрипта используют память.memory_get_peak_usage(true), очевидно, возвращает максимальный объем памяти, который был использован.

Вы говорите, что ваше приложение некоторое время работает нормально.Это единственный скрипт, который выполняется все это время, или много разных запросов / посетителей страницы?Обычно для каждого скрипта есть max_execution_time (часто по умолчанию 30 секунд).Это может быть изменено в коде для каждого сценария путем вызова set_time_limit().

Существует также свойственный memory_limit, как установлено в php.ini.Это может быть 64M или ниже на общем хосте.

"... как только я буду открывать все больше и больше запросов ..." - существует ограничение на количество одновременных (ajax) запросовклиент может сделать с сервера.Браузеры могут быть установлены на 8 или даже меньше (это можно изменить в Firefox через about:config).Это сделано для того, чтобы один клиент не заполнил сервер запросами.Сервер может быть настроен на запрет клиентов, которые открывают слишком много запросов!

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

Должен ли я искатьспециализированный хостинг для размещения приложений?

Вам нужно быть более конкретным.Большинство сайтов в наши дни являются «приложениями».Если вы делаете больше, чем просто обслуживаете веб-страницы и постоянно запускаете интенсивные сценарии, которые выполняются в течение определенного периода времени, то вам, возможно, придется перейти на выделенный хостинг.Не только для вашего блага, но и для блага других на общем сервере!

0 голосов
/ 25 июля 2010

Ответ, вероятно, заключается в том, что ваша хостинговая компания имеет довольно ограниченную конфигурацию php.ini. Они могут, например, ограничить количество времени, в течение которого может выполняться сценарий, или ограничить объем памяти, который может использовать сценарий.

Что пытается сделать ваш код?

Вы можете рассмотреть возможность использования memory_get_usage и / или memory_get_peak_usage .

...