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


89

Я завантажую PHP для Windows. Я отримав 2 варіанти на веб-сайті.

  1. PHP Thread Safe
  2. PHP без потоків безпечний

Будь ласка, дайте відповіді на такі запитання:

  1. Яка різниця між ними? Які переваги та недоліки один перед одним?
  2. Я розробляю веб-сайт електронної комерції, на якому буде великий трафік, який з них рекомендується більше, і чому?


1
Що ви розумієте під поняттям "інтенсивний рух" і як ви можете бути впевнені, що отримаєте його?
Крек

@ Crack - Інтенсивний трафік означає, що багато-багато користувачів будуть користуватися веб-сайтом у певний час. Чому я не можу бути в цьому впевнений ?! Щось не так?
саміт

Тільки цей "інтенсивний рух" можна визначити різними способами, а те, що для деяких людей є інтенсивним, для когось може бути помірним або навіть слабким. Корисною метрикою тут є відвідування сторінки / день / година / хвилина, будь-який об’єктивний показник.
Крек

Відповіді:


93

З документації PHP:

Thread Safety означає, що двійковий файл може працювати в багатопотоковому контексті веб-сервера, наприклад Apache 2 у Windows. Захист потоків працює шляхом створення локальної копії сховища в кожному потоці, щоб дані не стикалися з іншим потоком.

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

Отже, це насправді залежить від того, як ви хочете використовувати PHP:

  • Apache + LoadModule: Thread Safe
  • Apache + FastCGI: безпечний без потоків
  • IIS: Thread Safe
  • 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 є деякі потоки управління накладними витратами, які вже виконуються веб-сервером, тому продуктивність буде погіршена
ReZa

3
@SimonEast Точно. Це як робити роботу двічі, один раз на PHP і один раз на веб-сервері
ReZa

2

Швидко і просто: Якщо ви використовуєте Apache, відредагуйте файл Apache24 \ conf \ httpd.conf і знайдіть "loadmodule". Якщо ви бачите, що ваш loadmodule посилається на .dll приблизно так:

LoadModule php7_module "e: /x64Stack/PHP/php7.1.9/php7apache2_4.dll"
AddHandler application / x-httpd-php .php
PHPIniDir "e: /x64Stack/PHP/php7.1.9"

Тоді ви хочете ввімкнути функцію Thread Safety або TS - версію Thread Safe .

В іншому випадку, якщо ви використовуєте IIS або Apache з CGI, то аромат NTS.

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


0

На додаток до Crack, з 5.4 ви можете використовувати вбудований веб-сервер (це чудово працює!).

Попередження Цей веб-сервер був розроблений для сприяння розробці додатків. Це також може бути корисно для цілей тестування або для демонстрації додатків, що працюють у контрольованих середовищах. Він не призначений для повнофункціонального веб-сервера. Його не слід використовувати в загальнодоступній мережі.


13
Вам потрібно додати якесь посилання на те, про що ви говорите. Що таке вбудований веб-сервер? Як це пов’язано з ThreadSafe та NotThreadSafe?
Despertar

2
Я думаю, під вбудованим веб-сервером він має на увазі вбудований веб-сервер PHP ( php -S ip:port) - хоча поняття не має відношення до безпеки потоків.
Девід Рефуа
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.