2000 年 10 月 20 日にリリースされた最初の Windows バージョンの PHP 3.0.17 以降、すべてのバージョンがスレッドセーフになっています。これは、マルチプロセス作業メソッドを使用する Linux/Unix システムとは異なり、Windows システムはマルチスレッドを使用するためです。動作します。 IIS で CGI モードで PHP を実行すると、CGI モードがマルチスレッドではなくマルチプロセスに基づいているため、非常に遅くなります。
通常、ISAPI モードで実行するように PHP を設定します。ISAPI は、はるかに高速なマルチスレッド方式です。しかし、問題があります。一般的に使用されている PHP 拡張機能の多くは、Linux/Unix のマルチプロセスの考え方に基づいて開発されています。これらの拡張機能を ISAPI モードで実行すると、問題が発生し、IIS がダウンします。したがって、CGI モードは IIS で PHP を実行する最も安全な方法ですが、CGI モードでは HTTP リクエストごとに PHP 環境全体をリロードおよびアンロードする必要があり、その消費量は膨大です。
IIS での PHP の効率とセキュリティを考慮するために、Microsoft は FastCGI ソリューションを提供しました。 FastCGI を使用すると、新しいリクエストごとにプロセスを再度開くのではなく、PHP プロセスを再利用できます。同時に、FastCGI では複数のプロセスを同時に実行することもできます。これにより、CGI プロセス モードの過剰な消費の問題が解決されるだけでなく、CGI プロセス モードにはスレッド セーフの問題がないという事実も利用されます。
したがって、ISAPI を使用して PHP を実行する場合は、スレッド セーフ (スレッド セーフ) バージョンを使用する必要があります。また、FastCGI モードを使用して PHP を実行する場合は、スレッド セーフ チェックを使用する必要はなく、None Thread Safe (NTS) を使用します。 、非スレッドセーフ)バージョンを使用すると、効率が向上します。
PHP 公式 http://php.net/ には、Widows の 4 つのバージョンがあります。VC9 x86 非スレッド セーフ、VC9 x86 スレッド セーフ、VC6 x86 非スレッド セーフ、VC6 x86 スレッド セーフです。
(注: phpinfo() 関数を使用して、スレッドセーフかどうか、およびどのコンパイラに属しているかを確認できます)
1. サポートされているサーバーが異なります
VC9 バージョンは IIS サーバー用であり、サポートされていません。 APACHE、VC6 バージョン IIS と Apache の両方のサポートが提供されます
VC6 とは何ですか?
VC6 は従来の Visual Studio 6 コンパイラーであり、このコンパイラーを使用してコンパイルされます。
VC9とは何ですか?
VC9 は、Microsoft の VS エディターでコンパイルされた Visual Studio 2008 コンパイラーです。
それでは、ダウンロードする PHP のバージョンをどのように選択すればよいのでしょうか?
Windows で Apache+PHP を使用している場合は、VC6 バージョンを選択してください;
Windows で IIS+PHP を使用している場合は、VC9 バージョンを選択してください
2. PHP には 2 つの実行方法があります。 : ISAPI と FastCGI。