Php thread safe или non thread safe для windows

Последнее обновление: 25.11.2023

Есть разные способы установки всего необходимого программного обеспечения. Мы можем устанавливать компоненты по отдельности, а можем использовать уже готовые
сборки на подобие Denwer или EasyPHP. В подобных сборках компоненты уже имеют начальную настройку и уже готовы для создания сайтов. Однако рано или поздно разработчикам
все равно приходится прибегать к установке и конфигурации отдельных компонентов, подключения других модулей. Поэтому мы будем устанавливать все компоненты по отдельности.
В качестве операционной системы будет использоваться Windows.

Что подразумевает установка PHP? Во-первых, нам нужен интерпретатор PHP. Во-вторых, необходим веб-сервер, например, Apache, с помощью которого мы сможем обращаться
к ресурсам создаваемого нами сайта.

Для установки PHP перейдем на офсайт разработчиков https://www.php.net/downloads. На странице загрузок мы можем найти различные дистрибутивы
для операционной системы Linux. Если нашей операционной системой является Windows, то нам надо загрузить один из пакетов со страницы https://windows.php.net/download.

Интерпретатор PHP имеет две версии: Non Thread Safe и Thread Safe. В чем разниц между ними?
Версия Thread Safe позволяет задействовать многопоточность, тогда как Non Thread Safe — однопоточная версия.
Выбрем версию Thread Safe.

Установка PHP на Windows

Распакуем загруженный архив в папку, которую назовем php. Пусть эта папка у нас будет располагаться в корне диска C, а ее полный путь будет C:\php.

Теперь нам надо выполнить минимальную конфигурацию PHP. Для этого зайдем в распакованный архив и найдем там файл php.ini-development.

Установка интерпретатора PHP на Windows

Это файл
начальной конфигурации интерпретатора. Переименуем этот файл в php.ini и затем откроем его в текстовом редакторе.

Найдем в файле строку:

;extension_dir = "ext"

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

Раскомментируем эту строку, убрав точку с запятой и укажем полный путь к папке расширений php:

extension_dir = "C:\php\ext"

Остальное содержимое файла оставим без изменений.

Теперь установим веб-сервер.

  • PHP For Windows

    This site is dedicated to supporting PHP on Microsoft Windows.
    It also supports ports of PHP extensions or features as well as
    providing special builds for the various Windows architectures.

    If you like to build your own PHP binaries, instructions can be found on the
    Wiki.

    Which version do I choose?

    IIS

    If you are using PHP as FastCGI with IIS you should use the Non-Thread Safe (NTS) versions of PHP.

    Apache

    Please use the Apache builds provided by Apache Lounge.
    They provide VC15 and VS16 builds of Apache for x86 and x64.
    We use their binaries to build the Apache SAPIs.

    With Apache, using the apache2handler SAPI, you have to use the Thread Safe (TS) versions of PHP.

    VS16 & VS17

    More recent versions of PHP are built with VS16 or VS17 (Visual Studio 2019 or 2022 compiler respectively) and
    include improvements in performance and stability.

    — The VS16 and VS17 builds require to have the Visual C++ Redistributable for Visual Studio 2015-2022 x64 or x86 installed

    TS and NTS

    TS refers to multithread capable builds. NTS refers to single thread only builds. Use case for TS binaries involves interaction with
    a multithreaded SAPI and PHP loaded as a module into a web server. For NTS binaries the widespread use case is interaction with a web server through
    the FastCGI protocol, utilizing no multithreading (but also for example CLI).

    What is PGO?

    Profile Guided Optimization is an optimization
    feature available in Microsoft’s Visual C++ compiler that allows you to optimize an output file based on profiling data collected during test runs of the application or module.

    Links:

    • PGO on MSDN
    • Visual C++ Team Blog — PGO with PHP
    • PHP PGO build for maximum performance (old)

    amd64 (x86_64) Builds

    PHP 7 provides full 64-bit support. The x64 builds of PHP 7 support native 64-bit integers, LFS, 64-bit memory_limit and much more.

    x64 builds are recommended (almost all Windows installations support x64).

    Long and multibyte path

    PHP 7.1+ supports long and UTF-8 paths. See the manual for details.

    Archives

    Past releases are available from our archives, older versions
    not found there can be found at the Museum.

  • PHP 8.4 (8.4.7)

    Download source code [29.3MB]

    Download tests package (phpt) [17.34MB]

    VS17 x64 Non Thread Safe (2025-May-06 14:19:42)

    • Zip
      [32.21MB]
      sha256: b79a5c115bdf80ae21bda6f0035e5fb2823ef07659c999109f86da15b56be523
    • Debug Pack
      [37.09MB]
      sha256: 40d8d8d46bc8d169614bd9fb6a8d50cc8bfc342bbd992622ef9b59cee61dddd2
    • Development package (SDK to develop PHP extensions)
      [1.35MB]
      sha256: 7b72a5ee95e593caa0a424814a143e004b6b6a360ea042d41f90c7bb39451210

    VS17 x64 Thread Safe (2025-May-06 14:18:08)

    • Zip
      [32.37MB]
      sha256: b2cce3ca2ae599ef1b13ae0b84b17aa25f71a94e3098d52c7407238375c1056a
    • Debug Pack
      [37.13MB]
      sha256: 7d4d38328e9766a22548602696dc82f7f76e79ffe32d3570c5fb067fbea621ab
    • Development package (SDK to develop PHP extensions)
      [1.35MB]
      sha256: 1402f45e0910b600482e173821deda0de4987b54f956300cee9109e54e1594b1

    VS17 x86 Non Thread Safe (2025-May-06 14:16:48)

    • Zip
      [28.9MB]
      sha256: 30b18db54848c1fc1083a0831bc83770306cc30c47b65991edbfa1302916b4f5
    • Debug Pack
      [37.25MB]
      sha256: 4d6f85a033b6904dce81be1b2b8f12ed966b15c618897384def6b94e27a7eb17
    • Development package (SDK to develop PHP extensions)
      [1.35MB]
      sha256: 37aefdb7abd1ad012fc238f3f06eee1307cec1993493aded710eb330239c6a88

    VS17 x86 Thread Safe (2025-May-06 14:17:02)

    • Zip
      [28.96MB]
      sha256: 2e3893f826675a036fee201e6621cf103bd560161233ee2f55852bfb7e0c0a56
    • Debug Pack
      [37.33MB]
      sha256: 45e6eda52a32cfeb00614659964b65a49a04a82ea405d09b63d8836807bfac45
    • Development package (SDK to develop PHP extensions)
      [1.35MB]
      sha256: a81b8dbb815f59abdc86a5ac45e7c481e0c8e50b70984a8a4e16c0a5a66ebf74

    PHP 8.3 (8.3.21)

    Download source code [27.41MB]

    Download tests package (phpt) [16.61MB]

    VS16 x64 Non Thread Safe (2025-May-06 16:16:22)

    • Zip
      [30.7MB]
      sha256: 7ff517c5945fe50bd41b69a8365678ebde5dcf56e85ac422fb5669b6c7d5a9ce
    • Debug Pack
      [30.34MB]
      sha256: 08e3cd907f3c9fc211484931c3b9b99112ae8b2e2a99560e97f94b14b3238b00
    • Development package (SDK to develop PHP extensions)
      [1.26MB]
      sha256: 7c9e4e2dcf437a4dd959aea0249a0ab0a36f33c9b6324d5a0e49b933b4c580c5

    VS16 x64 Thread Safe (2025-May-06 16:15:28)

    • Zip
      [30.84MB]
      sha256: beac2027a60a76728e7db9752abc13545fe3ff5226dd887d9bae489d8b72aa46
    • Debug Pack
      [30.29MB]
      sha256: 92fb33a4eb607f1aab41a45c5763772c805685fdc4528764d2afa949e15c10da
    • Development package (SDK to develop PHP extensions)
      [1.26MB]
      sha256: 0551d636a2579bc1fe280700fe4bcc8c42933f6d2759640e19e17704b1d7ab27

    VS16 x86 Non Thread Safe (2025-May-06 16:14:38)

    • Zip
      [27.57MB]
      sha256: e87140e523164b9d8d483fbd0e82ef5056c6f5cf22bdcdd78f9d76f8b3664d63
    • Debug Pack
      [30.25MB]
      sha256: f344aacb62afc6fffe9c604309f2817404d6263dd728fc45f7cf349ce900bb10
    • Development package (SDK to develop PHP extensions)
      [1.26MB]
      sha256: bd6cfb01744bc62e6e351c2dd4dde28f5f4800b1971600432d07caa6911a1ce0

    VS16 x86 Thread Safe (2025-May-06 16:12:54)

    • Zip
      [27.55MB]
      sha256: 705a775c0f8b2ae362f11c161a0baefefde1d6dbe13eb23133ed1381480d9f65
    • Debug Pack
      [29.87MB]
      sha256: 207ef15ceec19af59d0904db18110eb45b299320c87b6e6fd5a9c08a43a50260
    • Development package (SDK to develop PHP extensions)
      [1.26MB]
      sha256: a0e9976865b496697a89de4620144035105f34a3955d80006d539fa0607d5f46

    PHP 8.2 (8.2.28)

    Download source code [26.52MB]

    Download tests package (phpt) [15.89MB]

    VS16 x64 Non Thread Safe (2025-Mar-11 18:55:38)

    • Zip
      [30.33MB]
      sha256: eb25bf88edc2b7648b0757f2885df4573a0c85b43bde69a9277b258760562b96
    • Debug Pack
      [25.43MB]
      sha256: 22850eef389a4540dcc92f377caf99b08d1b6e453731995c79d28aeed27bf92c
    • Development package (SDK to develop PHP extensions)
      [1.24MB]
      sha256: 662c730a96e80cfb3bd063db63785c11c9512d2e4b9d46292e9121b800e6b4e8

    VS16 x64 Thread Safe (2025-Mar-11 18:57:48)

    • Zip
      [30.44MB]
      sha256: 50cc8d5437ae81356de64cd6f79996c4f5a2b8a2e2479a0be9af13b16a7eecc8
    • Debug Pack
      [25.59MB]
      sha256: 53dd31a1fa11fb6c8ef28701f5273326300e1d1847ff8712a9daf723732e152b
    • Development package (SDK to develop PHP extensions)
      [1.24MB]
      sha256: c41fe84958fca14eb5f7434c7bfa1bfaedf0f74eadf9db4bcbdc3e1d48984340

    VS16 x86 Non Thread Safe (2025-Mar-11 18:52:24)

    • Zip
      [27.22MB]
      sha256: 65775058a844e60b9a7bdcae1827f053cf2e9bafef482ae637ff0749d10bd7b2
    • Debug Pack
      [25.62MB]
      sha256: d97029baed625b58b30e9ec433358bc4fdb83f9d3efcac5a90d9b9b730d719e9
    • Development package (SDK to develop PHP extensions)
      [1.24MB]
      sha256: 38fd9dba94e75705b7932536393b3f16cd8340171450ee1b252e2b03a6dcaafd

    VS16 x86 Thread Safe (2025-Mar-11 18:51:46)

    • Zip
      [27.2MB]
      sha256: bb5d555e2ecb9c1c220140f92cc53e7709feb2953434b888562d06165c8f14a9
    • Debug Pack
      [25.28MB]
      sha256: d09f710e2f485e0dc4713ae4331de2231d81a945373ccbad8dc239c435319bb2
    • Development package (SDK to develop PHP extensions)
      [1.24MB]
      sha256: 1075002f9bbe1190cab7955f97e1c01e42afd8315f2adcc8726f3699cd43327c

    PHP 8.1 (8.1.32)

    Download source code [25.74MB]

    Download tests package (phpt) [15.43MB]

    VS16 x64 Non Thread Safe (2025-Mar-12 11:13:34)

    • Zip
      [29.34MB]
      sha256: a39a588cbfd304bda51ea5c9b13fec53b9a63f0f306f53ee08409fda58dabbfb
    • Debug Pack
      [24.93MB]
      sha256: f5c327bf4ad24722f9b4dbdcd546c16edcf0562e63ba5446e9bcec74c0ddcf11
    • Development package (SDK to develop PHP extensions)
      [1.21MB]
      sha256: 7a9560331219f198d172cfe6883297ec13ed30b6b01318b5aa962b642464269a

    VS16 x64 Thread Safe (2025-Mar-12 11:17:00)

    • Zip
      [29.44MB]
      sha256: 6729ee58a364b5176360ce826678840a54c55e6036d11499330383cd6689f8e4
    • Debug Pack
      [24.81MB]
      sha256: 7e9511ff17ca112bdcec2594037ba26e3e4829a59e4160c7b8438052c2287fdf
    • Development package (SDK to develop PHP extensions)
      [1.21MB]
      sha256: 9f14572b3aeabcc2a591300a20209ce72b08ca9e5152b74a6840114eb7345d7f

    VS16 x86 Non Thread Safe (2025-Mar-12 11:12:10)

    • Zip
      [26.39MB]
      sha256: 1c2705f73b5eb79e5695622f73d254bcf486f782c9b8c9c2bfc0aabdb80e122e
    • Debug Pack
      [24.99MB]
      sha256: 3a4265a1adf0b592aaf09d3c489b81b214c2c7eedf9fc7677c1f739a5cac13d8
    • Development package (SDK to develop PHP extensions)
      [1.21MB]
      sha256: 889419a652b933b1804fa028ed31b945a7229b0a511e87a67a61023a3a88a210

    VS16 x86 Thread Safe (2025-Mar-12 11:10:46)

    • Zip
      [26.37MB]
      sha256: 1b1dd346ee0b329e7b92a984f2f3dc6c987a300289ff112f978dfcce30565893
    • Debug Pack
      [24.61MB]
      sha256: d9bfac775f4eff2c291e24f4928e91d0bf2482654431876c4232ef7a7fde520d
    • Development package (SDK to develop PHP extensions)
      [1.21MB]
      sha256: bef96cb478e8b34a3d20d6c01e676a68e182c0b4d4456e3a5b3bee440779e970

Last Updated :
17 Jul, 2019

Thread-safe: It is used to ensure that when the shared data structure which is manipulated by different threads are prevented from entering the race condition. Thread-safety is recommended when the web server run multiple threads of execution simultaneously for different requests. In Thread Safety binary can work in a multi-threaded web server context. Thread Safety works by creating a local storage copy in each thread so that the data will not collide with another thread.
For example:

  • Apache + LoadModule
  • IIS

Non-thread-safe: It does not check the safety of the threads which makes it faster to run but at the same time, it becomes more unstable and crashes very frequently. It refers to a single thread only builds. In non-thread safe version binaries widespread use in the case of interaction with a web server through the FastCGI protocol, by not utilizing multi-threading.
For example:

  • Apache + FastCGI
  • IIS + FastCGI

So it depends on the way that you want to use PHP. AFAIR running PHP with the fastCGI is the preferable way. If you are unknown which version of PHP is installed in your system then there is an easy way to know that.
Check the version of installed PHP Thread safe or Non Thread Safe:
Open a phpinfo() and search for the line Thread safety for a thread-safe build you should find enable.

  • On Windows:
    php -i|findstr "Thread"
    
  • On *nix:
    php -i|grep Thread
    
  • In the both cases will display any one
    Thread Safety => enabled
    //or
    Thread Safety => disabled
    

В данной статье мы научимся устанавливать PHP на Windows Server. Существует несколько способов установки PHP, включая PHP Manager for IIS от Microsoft, но мы остановимся на универсальном ��пособе установки, который позволит установить PHP даже без привязки, например к IIS. Интегрировать PHP и IIS не сложно.

Для каждой версии PHP существует два варианта PHP: Non Thread Safe и Thread Safe

Thread Safe — потоко безопасная. Выбираем этот вариант, если PHP используется как mod_php (модуль Apache). В большинстве случаев, в связке с веб-сервером IIS, для операционной системы Windows Server вариант Thread Safe не подходит.

Non Thread Safe — потоконебезопасная версия PHP. Используется в случаях, когда PHP запускается через CGI и каждый поток, это отдельный, изолированный от других процесс CGI и нет необходимости в потокобезопасноcти. При этом скорость обработки запросов выше. Non Thread Safe также необходимо выбирать, если планируется использовать FastCGI. Как раз этот режим работы рекомендуется использовать в работе IIS + PHP.

Для установки PHP необходимой версии, перейдем на страницу скачивания PHP для Windows и скачаем zip архив VS16 x64 Non Thread Safe необходимой нам версии PHP. В данном примере будем использовать PHP 8.1

Далее, создадим на диске сервера папку, в которую необходимо разархивировать скачанный архив. Например, C:\php

Кроме того, для работы PHP на операционной системе Windows необходим пакет Microsoft Visual Studio.

Так как мы выбрали версию VS16 x64, на этой же странице сайта есть ссылка на скачивание необходимой версии Microsoft Visual Studio, а именно Visual Studio 2015-2019

Скачаем и установим: Во время установки не изменяем предлагаемые настройки и дожидаемся завершения.

Дополнительно рекомендуется прописать путь к PHP в глобальной переменной PATH. Для этого откроем окно Свойств системы: Пуск — Выполнить и выполним команду

control system

Далее откройте окно дополнительных свойств системы (Advanced sysytem setting) — вкладка Дополнительно (Advanced) — нажмите кнопку Переменные среды (Environmant Variables)

Добавьте путь к папке, в которой размещен PHP в значение переменной PATH. В нашем случае, это папка C:\php; (после указанного пути обязательно поставьте точку с запятой)

Сохраните изменения, поочередно нажимая ОК в открытых окнах.

Чтобы узнать установленную версию PHP, в окне командной строки выполним команду

php -v

При этом нет надобновти перехода в каталог С:/php так как ранее путь к исполняемому файлу PHP был добавлен в переменные окружения.

В данной статье мы научились устанавливать PHP необходимой версии на Windows Server.

Здесь ответ на ваш вопрос.

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

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

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

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

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Dell tools for windows 7 что это
  • Аналог camscanner для windows
  • Intel graphics media accelerator 3150 драйвер для windows 7 64 бит
  • Высветилась надпись активация windows
  • Что такое вторая раскладка клавиатуры при установке windows