Назад | Перейти на главную страницу

Считается ли сам скрипт PHP процессом?

У моего сервера ограниченное количество одновременных процессов (20), которые он может обрабатывать. Чтобы убедиться, что я не превышаю, мне нужно понимать:

  1. Когда пользователь ожидает завершения загрузки сценария PHP, выполняет ли весь продолжительность ожидания считается одним процессом?

  2. В большинстве случаев ожидание завершения сценария - это общение с удаленным сервером через cURL ... Я считаю, что большую часть времени это просто ожидание чтобы сервер ответил данными. Считается ли все время подключения к удаленному серверу процессом?

Я занимаюсь обработкой платежей и мне нужно убедиться, что никто не отключится. Скрипт запускается через mod_fcgid.

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

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

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

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

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

Все зависит от этого.

Если на вашем сервере работает Apache с mod_php, то ваш PHP-скрипт будет запущен вместе с процессом Apache и будет учитываться как один процесс (тот, который Apache запускает для этого HTTP-запроса). Однако, если ваш сценарий использует системные вызовы для использования внешних программ, он, естественно, порождает новые процессы и запускает их. Стоит отметить, что в mod_php каждый скрипт запускается с идентификатором пользователя, на котором работает Apache, поэтому, если на сервере много пользователей, каждый из них использует те же ресурсы, что и другой.

Если ваш веб-сервер настроен не так, как Apache + mod_php (например, Apache + suPHP, Apache + fastCGI или Apache + mpm engine), подсчет процессов - совсем другое дело. Затем сценарии запускаются от имени владельца сценария, и разделение ресурсов становится более простым. Однако принципы те же: каждый сценарий представляет собой отдельный процесс, если он не вызывает какие-либо внешние программы.