В чем заключаются технические различия между многопоточными и не поточно-безопасными установочными пакетами PHP для Windows? - PullRequest
36 голосов
/ 26 апреля 2011

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

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

  • VC9 x86 без резьбы
  • VC9 x86 Thread Safe
  • VC6 x86 без резьбы
  • VC6 x86 Thread Safe

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

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

Это все очень запутанно, и мне нужна помощь в понимании выбора.

Ответы [ 2 ]

54 голосов
/ 27 апреля 2011

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

В самой простой форме ответ: Какую версию 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 с помощью этого необслуживаемого компилятора.

Мы рекомендуем сборки VC9 Apache, предоставляемые 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.

Thread Safe vs NonThread Safe

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

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

Обратите внимание: все это относится только к пользователям Windows.


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

И это все.

Дополнительная литература:

1 голос
/ 26 апреля 2011

Лично я использую виртуализированный сервер LAMP.Все услуги хостинга, которые я использую, относятся к какой-то разновидности Linux, и между WAMP и LAMP слишком много различий.Затем я просто использую 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.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...