Apache на Linux и i18n: порождение процессов или потоков? - PullRequest
0 голосов
/ 09 апреля 2010

Я бы хотел лучше понять, что именно происходит, когда Apache в linux получает HTTP-запрос в модели предварительного форка процесса.

Допустим, у нас есть 20 дочерних процессов Apache, ожидающих.

Когда я получаю HTTP-запрос, верно ли говорить, что для обработки запроса будет выбран 1 дочерний процесс и что этот процесс не будет обрабатывать другой запрос от другого пользователя до тех пор, пока первый не будет завершен?

Я задаю вопрос из-за ограничения PHP, которое гласит:

The locale information is maintained per process, not per thread.
If you are running PHP on a multithreaded server API like IIS or Apache
on Windows, you may experience sudden changes in locale settings while a script
is running, though the script itself never called setlocale(). This happens due
to other scripts running in different threads of the same process at the same
time, changing the process-wide locale using setlocale().

1 Ответ

0 голосов
/ 10 апреля 2010

Обычно, если вы работаете с mpm-prefork, каждый экземпляр PHP имеет свой собственный процесс, поэтому сменить локаль безопасно, если вы работаете с mpm-worker или mpm-event, вы не в безопасности.

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

Примечания:

  • Как правило, нет причин не использовать mpm-prefork под Linux при работе PHP.
  • В Windows нет такой вещи, как "fork", поэтому apache является многопоточным под Windows
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...