WindowsバージョンのPHPには、スレッドセーフ(スレッドセーフ)とスレッドセーフなし(NTS、非スレッドセーフ)があります。 ) バージョン 5.2.1 以降、この 2 つの違いは何ですか?どちらを使用するべきですか?ここで簡単に紹介します。
2000 年 10 月 20 日にリリースされた PHP 3.0.17 の最初の Windows バージョン以降、すべてのバージョンがスレッドセーフになっています。これは、マルチプロセス作業方式を使用する Linux/Unix システムとは異なり、Windows システムはマルチプロセスを採用しているためです。ねじ込み作業方式。 IIS で CGI モードで PHP を実行すると、CGI モードがマルチスレッドではなくマルチプロセスに基づいているため、非常に遅くなります。通常、PHP は ISAPI モードで実行されるように構成します。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) を使用します。 、非スレッドセーフ)バージョンを使用すると、効率が向上します。