Почему существует 2 версии PHP (Non Thread Safe и Thread Safe)?

Здравствуйте.
На сайте PHP для загрузки доступны 2 версии: Non Thread Safe и Thread Safe.
Если я правильно понимаю, версия Thread Safe нужна для того, чтобы была возможность использовать расширение pthreads. Но если есть версия Thread Safe зачем до сих пор собирается версия с Non Thread Safe?
Какие недостатки есть у версии Thread Safe (больше накладных расходов, уменьшенная производительность, etc)?
Благодарю за ответы.
С уважением.
  • Вопрос задан
  • 10146 просмотров
Пригласить эксперта
Ответы на вопрос 1
zoonman
@zoonman
⋆⋆⋆⋆⋆
Здесь ответ на ваш вопрос.

Для тех, кто не знает английский.

Версию сервера нужно выбирать в зависимости от того, как вы интегрируете PHP c веб-сервером.
Например, когда вы используете mod_php, у вас модуль и PHP всегда загружены в память и каждый запрос обрабатывается в отдельном потоке. Из-за этого mod_php работает быстрее, чем CGI. В данном случае нужно использовать потоко-безопасную реализацию (thread-safe) поскольку каждый поток имеет доступ к памяти другого потока.

Когда вы работаете с IIS, у вас PHP запускается ввиде отдельного процесса через CGI и в таком случае потоко-безопасность не имеет смысла, поскольку у вас 1 процесс и фактически 1 поток созданный этим же процессом. Операционная система изолирует память процессов по умолчанию.

В случае модели с FastCGI, потокобезопасность также не имеет смысла, поскольку тотже PHP-FPM держит несколько отдельных процессов PHP в памяти, но не потоков.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы