web-dev-qa-db-ja.com

スレッドセーフと非スレッドセーフの技術的な違いは何ですかPHP Windowsインストールパッケージ?

現在、Apache/Windowsベースの開発環境にPHPをインストールしようとしていますが、最初のハードル、つまりインストールする適切なパッケージの選択に取り掛かろうとしているようです。

PHPはfourフレーバーで利用可能

  • VC9 x86非スレッドセーフ
  • VC9 x86スレッドセーフ
  • VC6 x86非スレッドセーフ
  • VC6 x86スレッドセーフ

これらのバージョンの実用的な意味の違いは何ですか?

これが十分に複雑ではなかった場合、PHPのバージョン5.3はVC9でのみ使用できます(5.2はVC6パッケージに付属しています)。しかし、PHPサイトによれば、ApacheでVC9を使用することはしない必要があります...では、なぜApacheは古いバージョン?

それはすべて非常に混乱しているので、選択肢を理解するのを手伝ってください。

36
Chuck Le Butt

多くの調査の結果、この質問に対する自分の答えを見つけることができました。

その最も基本的な形式での答えは次のとおりです。インストールする必要があるPHPのバージョン)は、実行しているWebサーバーによって異なります。

以下は、私が学んだことに基づいて、PHP)のバージョンを選択する際に使用される用語の詳細な説明です。


VC6対VC9

まず、Apache for Windowsの異なるバージョンは、異なるコンパイラーでコンパイルされます。たとえば、 Apache.org のバージョンはMicrosoft Visual C++ 6VC6とも呼ばれる)を使用してコンパイルするように設計されています。このコンパイラは非常に人気がありますが、非常に古いものです。 (1998年に遡ります。)

異なるコンパイラ用に作られた異なるバージョンのApacheがあります。たとえば、 ApacheLounge.com からダウンロードできるバージョンは、人気の高い最新のコンパイラMicrosoft Visual C++ 9から2008年にコンパイルされるように設計されています。別名VC9

(注:これらの2つのコンパイラーは2つの最も人気のあるオプションです。そのため、VC7、VC8などのコンパイル済みバージョンのApacheを使用することは可能ですが、それらに遭遇することはほとんどありません。)

PHPの最新バージョンはVC9形式でのみ配布されています(ただし、VC6では古いバージョンがまだ利用可能です)ため、この最新のコンパイラ(VC9)の使用は重要です。

その上、ApacheLoungeによると、VC9でコンパイルされたバージョンのApacheを使用すると、「パフォーマンス、メモリ管理、安定性などの領域で」多くの改善が行われました。

それだけでは不十分な場合、PHPの開発者はサイトで次のように述べています。

Windowsユーザー:Visual Studio C++ 6(VC6)で作成されたビルドは提供されなくなったことに注意してください。このメンテナンスされていないコンパイラを使用してPHP for Windowsの高品質で安全なビルドを維持することは不可能です。

ApacheLoungeが提供するVC9 Apacheビルドをお勧めします

すべてのPHPユーザーは、PHP 5.2シリーズがサポートされなくなったことに注意してください。すべてのユーザーがPHPにアップグレードすることを強くお勧めします= 5.3.6。

全体として、これは、ApacheとPHPのVC9バージョンを使用するという非常に説得力のある議論です。

したがって、 公式Apacheサイト のバージョンのApacheを使用している場合は、VC6でコンパイルされるため、古いバージョンのPHPを使用する必要があります。 =そのコンパイラ用。 ApacheLounge.com で利用できるような、VC9でコンパイルされたバージョンのApacheを使用している場合は、PHPの最新バージョンを使用できます。 =(VC9の場合)。

ローカル開発環境を実行している私にとっては、最新バージョンのPHPを使用することが望ましいため、VC9バージョンのApacheが必要なので、VC9バージョンのPHPを使用できます。

スレッドセーフと非スレッドセーフ

もう一度、これはあなたのウェブサーバーに行き着きます。デフォルトでは、ApacheはWindowsにModuleとしてインストールされますが、-FastCGIとして実行するように変更できます。 2つの間には多くの違いがありますが、基本的にFastCGIはよりモダンで、より高速で、より堅牢で、より多くのリソースを必要とします。ローカル開発環境を実行している人にとっては、FastCGIはやり過ぎかもしれませんが、明らかに多くのホスティング会社が私が述べた理由でFastCGIとして実行しているので、開発環境でそうすることには良い議論があります。

Apache(またはIIS)をFastCGI(またはCGI)として実行している場合は、Non Thread SafeバージョンのPHPが必要です。 Apacheをデフォルトで(モジュールとして)実行している場合は、より伝統的なThread Safeバージョンが必要になります。

注意:これはすべてWindowsユーザーにのみ適用されます。


私はFastCGIに煩わされるつもりはありません(他の人が私を説得しない限り)。そのため、私はVC9スレッドセーフバージョンのPHPが必要です。

以上です。

参考文献]

55
Chuck Le Butt

個人的には、仮想化されたLAMPサーバーを使用しています。私が使用するすべてのホスティングサービスはLinuxの一部のフレーバー上にあり、WAMPとLAMPの間には多くの違いがあります。次に、そのバージョンのLinuxのデフォルトのtasksel LAMPサーバーを使用します。

現在の私の実際のセットアップは、VMWare(MacではFusion、WindowsではPlayer)を使用しています。私は3つのVMを持っています-1つはUbuntu 10.04 LTSを使用するPHP5.3用で、もう1つはPHP 5.1 on Ubuntu 8.04 LTSを使用します。 PHP 5.1)。RubyOnRails開発者向けに3つ目のVMがあります。

つまり、開発環境を本番環境にできるだけ近づけるようにしています。したがって、ApacheのバージョンとPHPがホスト上にあることを確認し、それをガイドとして使用してください。

1
Dan Blows