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

#php #windows #apache

#php #Windows #apache

Вопрос:

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

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

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

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

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

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

Комментарии:

1. Пожалуйста, перенесите все обсуждения meta о достоинствах этого вопроса в meta. В частности: здесь .

Ответ №1:

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

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

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


VC6 vs VC9

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

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

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

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

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

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

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

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

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

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

Итак, если вы используете версию 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.

И это все.

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

Комментарии:

1. Что, если нам нужна версия V6, но есть только версии V9? Например. похоже, что версии PHP 5.3.5 V6 на нетwindows.php.net/downloads/releases/archives . Тогда мы вынуждены компилировать самостоятельно? Или этому уже посвящен веб-сайт?

2. Да, вам нужно будет скомпилировать его самостоятельно, и это, скорее всего, завершится неудачей. Вам также потребуется скомпилировать все библиотеки зависимостей. Кстати, зачем вам VC6? Использование устаревшей версии компилятора для компиляции устаревшей версии PHP.

Ответ №2:

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

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

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

Комментарии:

1. @Pacerier вы правы, на самом деле это не так. Это был один из моих первых ответов на StackOverflow, и я думаю, что я пытался сказать «запустите все, что вы собираетесь запускать в рабочей среде». У него было два положительных отзыва, так что, по-видимому, это кому-то помогло, но я рад его удалить.