Каковы технические различия между потокобезопасными и Не потокобезопасными установочными пакетами PHP для Windows?


В настоящее время я собираюсь установить PHP для среды разработки на базе Apache/Windows, но, похоже, я столкнусь с первым препятствием: выбором правильного пакета для установки.

PHP доступен не менее чем в четырех вариантах :

  • VC9 x86 Не потокобезопасный
  • Потокобезопасный VC9 x86
  • VC6 x86 Не потокобезопасный
  • Потокобезопасный VC6 x86

В чем разница между этими версиями в практический смысл?

Если это было недостаточно сложно, версия 5.3 PHP доступна только в VC9 (с 5.2, поставляемым с пакетами VC6). И все же, согласно сайту PHP, вы не должны использовать VC9 с Apache... Так почему же Apache получает более старую версию?

Все это очень запутанно, и я хотел бы получить некоторую помощь в понимании выбора.

Author: pb2q, 2011-04-26

2 answers

После долгих исследований мне удалось найти свои собственные ответы на этот вопрос.

В своей самой основной форме ответ таков: Какая версия PHP, которую вы должны установить, зависит от того, какой веб-сервер вы используете.

Вот более глубокое объяснение терминов, используемых при выборе версии PHP, на основе того, что я узнал:


VC6 против VC9

Во-первых, разные версии Apache для Windows компилируются с помощью разных компиляторов. Для пример, версии на Apache.org предназначены для компиляции с использованием Microsoft Visual C++6, также известного как VC6. Этот компилятор очень популярен, но также и очень стар. (Он датируется 1998 годом.)

Существуют разные версии Apache, созданные для разных компиляторов. Например, версии, доступные для загрузки с ApacheLounge.com предназначены для компиляции с помощью популярного и более позднего компилятора Microsoft Visual C++9 из 2008. Также известен как VC9.

(Примечание: Эти два компилятора являются двумя наиболее популярными вариантами. Поэтому, хотя возможно иметь скомпилированную версию Apache для VC7, VC8 и т. Д., Маловероятно, что вы с ними столкнетесь.)

Использование этого более позднего компилятора (VC9) важно, потому что последние версии PHP распространяются только в форме VC9 (хотя более старые версии все еще доступны для VC6).

Кроме того, согласно ApacheLounge, существует множество улучшения при использовании версии Apache, скомпилированной с VC9, "в таких областях, как производительность, управление памятью и стабильность".

Если этого было недостаточно, разработчики PHP сделали следующее заявление на своем сайте:

Пользователи Windows: пожалуйста, имейте в виду, что мы больше не предоставляем сборки, созданные с Visual Studio C++6 (VC6). Невозможно поддерживать высококачественную и безопасную сборку PHP для Windows с помощью этого неподдерживаемого компилятора.

Мы рекомендую сборки Apache VC9, предоставленные ApacheLounge.

Всем пользователям PHP следует отметить, что PHP серия 5.2 больше не поддерживается. Всем пользователям настоятельно рекомендуется перейти на PHP 5.3.6.

В целом, это чрезвычайно убедительный аргумент в пользу использования версий Apache и PHP VC9, если вы спросите меня.

Поэтому, если вы используете версию Apache с официального сайта Apache, она будет скомпилирована с VC6, и поэтому вам следует использовать более старая версия PHP для этого компилятора. Если вы используете версию Apache, скомпилированную с VC9, например, доступную на ApacheLounge.com , вы можете использовать последнюю версию PHP (для VC9).

Для меня, работающего в локальной среде разработки, было бы предпочтительнее иметь последнюю версию PHP, поэтому требуется версия Apache VC9, чтобы я мог использовать версию PHP VC9.

Потокобезопасный против Не потокобезопасного

Еще раз это сводится к вашему веб-сервер. По умолчанию Apache устанавливается в Windows как Модуль, но его можно изменить для запуска как FastCGI. Между ними много различий, но, по сути, FastCGI является более современным, быстрым, надежным и более ресурсоемким. Для тех, кто работает в локальной среде разработки, FastCGI может быть излишним, но, по-видимому, многие хостинговые компании работают как FastCGI по причинам, которые я изложил, поэтому есть веские аргументы в пользу этого в разработке окружающая среда.

Если вы используете Apache (или IIS) как FastCGI (или CGI), то вам нужна Не потокобезопасная версия PHP. Если вы используете Apache по умолчанию (как модуль), то вам понадобится более традиционная потокобезопасная версия.

Пожалуйста, обратите внимание: Все это относится только к пользователям Windows.


Я не собираюсь возиться с FastCGI (если кто-то не убедит меня в обратном), поэтому для меня я хочу потокобезопасную версию PHP VC9.

И Это оно.

Дальнейшее чтение:

 49
Author: Chuck Le Butt, 2013-05-01 10:52:56

Лично я использую виртуализированный сервер LAMP. Каждая служба хостинга, которую я использую, работает на какой-то разновидности Linux, и между WAMP и LAMP слишком много различий. Затем я просто использую сервер tasksel LAMP по умолчанию для этой версии Linux.

Моя фактическая настройка прямо сейчас связана с VMware (Fusion на Mac, плеер на Windows). У меня есть 3 виртуальных машины - одна для PHP5.3 с Ubuntu 10.04 LTS, а другая для PHP 5.1 на Ubuntu 8.04 LTS. (Один из хостов, которые я использую, находится на RedHat, который в настоящее время поддерживает только PHP 5.1). У меня есть третья виртуальная машина для разработчиков RubyOnRails.

Другими словами, я стараюсь максимально приблизить свою среду разработки к своей производственной среде. Поэтому выясните, какая версия Apache и PHP установлена на вашем хосте, и используйте ее в качестве руководства.

 1
Author: Dan Blows, 2011-04-26 19:18:59