PHP Thread Safe и Non-Thread Safe для Windows

89

Я скачиваю PHP для Windows. У меня на сайте 2 варианта.

  1. Безопасный поток PHP
  2. PHP без поддержки потоков

Пожалуйста, ответьте на следующие вопросы:

  1. Какая разница между двумя? Какие преимущества и недостатки друг перед другом?
  2. Я разрабатываю веб-сайт электронной коммерции, который будет иметь большой трафик, какой из них рекомендуется больше и почему?
sumit
источник
1
Что вы понимаете под «интенсивным движением» и как можно быть уверенным, что вы его получите?
Crack
@ Crack - Большой трафик означает, что многие пользователи будут использовать сайт в определенный момент. Почему я не могу быть в этом уверен ?! Что-то не так?
sumit
Только этот «интенсивный трафик» можно определить по-разному, и то, что для некоторых людей является интенсивным, для некоторых может быть умеренным или даже легким. Здесь полезной метрикой является количество посещений страниц / день / час / минута, любой объективный показатель.
Crack

Ответы:

93

Из документации PHP:

Безопасность потоков означает, что двоичный файл может работать в контексте многопоточного веб-сервера, такого как Apache 2 в Windows. Безопасность потоков работает путем создания копии локального хранилища в каждом потоке, чтобы данные не сталкивались с другим потоком.

Так что же мне выбрать? Если вы решите запустить PHP как двоичный файл CGI, вам не понадобится потокобезопасность, потому что двоичный файл вызывается при каждом запросе. Для многопоточных веб-серверов, таких как IIS5 и IIS6, вы должны использовать многопоточную версию PHP.

Так что это действительно зависит от того, как вы хотите использовать PHP:

  • Apache + LoadModule: безопасность потоков
  • Apache + FastCGI: без поддержки потоков
  • IIS: безопасность потоков
  • IIS + FastCGI: без поддержки потоков

В руководстве по PHP есть хорошие инструкции по установке .

AFAIR, использующий PHP с FastCGI, является предпочтительным способом, он работает быстрее и позволяет более тонкую настройку безопасности.

Трещина
источник
11
Эта страница сообщает, что: «Если вы используете PHP с IIS, вам следует использовать версии PHP, не поддерживающие потоки (NTS)». по сравнению с ответом, говорящим: «IIS: Thread Safe»
umutm
9
Да, и упоминается FastCGI. Thread Safe используется при использовании ISAPI (php5isapi.dll)
Crack
3
Зачем вообще беспокоиться о небезопасном варианте? Это как: если бы я мог выбирать между покупкой безопасной машины и небезопасной машины, зачем мне вообще выбирать небезопасную машину? Он работает лучше или что-то в этом роде?
Саймон Ист
4
@SimonEast Версия NTS имеет некоторые накладные расходы на управление потоками, которые уже выполняются веб-
сервером
3
@SimonEast Точно. Это похоже на выполнение работы два раза, один раз на PHP и один раз на веб-сервере
ReZa 02
2

Быстро и просто: если вы используете Apache, отредактируйте файл Apache24 \ conf \ httpd.conf и найдите "loadmodule". Если вы видите, что ваш loadmodule ссылается на .dll примерно так:

LoadModule php7_module "e: /x64Stack/PHP/php7.1.9/php7apache2_4.dll"
Приложение AddHandler / x-httpd-php .php
PHPIniDir "e: /x64Stack/PHP/php7.1.9"

Тогда вы хотите включить безопасность потоков или версию TS - Thread Safe .

В противном случае, если вы используете IIS или Apache с CGI, то NTS.

Я использую несколько стеков и внутри этих нескольких серверов и версий PHP, поэтому не позволяйте путям / php или версиям сервера сбивать вас с толку.

Джим
источник
0

Помимо Crack, начиная с версии 5.4 вы можете использовать встроенный веб-сервер (он отлично работает!).

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

Сасо Филипович
источник
13
Вам нужно добавить какую-то ссылку на то, о чем вы говорите. Какой встроенный веб-сервер? Как это связано с ThreadSafe и NotThreadSafe?
Despertar
2
Я думаю, что под встроенным веб-сервером он имеет в виду встроенный веб-сервер PHP ( php -S ip:port) - хотя понятия не имею об отношении к безопасности потоков.
Дэвид Рефуа