PHPスレッドセキュリティと非スレッドセキュリティの違い


   Windows  PHP   5.2.1   Thread Safe(    ) None Thread Safe(NTS,     )  ,         ?       ?          。 

2000年10月20日にリリースされた最初のWindows版のPHP 3.0.17は、Linux/Unixシステムがマルチプロセスを採用している動作とは異なり、Windowsシステムがマルチスレッドを採用している動作であるため、スレッドセキュリティのバージョンが開始されます.IISでCGI方式でPHPを実行すると非常に遅くなります.これは、CGIモードがマルチスレッドではなくマルチプロセスの基礎の上に確立されているためです.一般的にPHPはISAPI方式で動作するように構成されていますが、ISAPIはマルチスレッド方式で、これでずっと速くなります.しかし、多くの一般的なPHP拡張はLinux/Unixのマルチプロセス思想で開発されており、これらの拡張はISAPI方式で実行されるとエラーが発生してIISを破壊するという問題がある.したがって、IISではCGIモードがPHP動作の最も安全な方法であるが、CGIモードはHTTPリクエストごとにPHP環境全体を再ロードおよびアンインストールする必要があり、その消費は大きい.
IISでのPHPの効率とセキュリティを両立させるため、マイクロソフトはFastCGIのソリューションを提供しました.FastCGIは、新しいリクエストごとにプロセスを再開するのではなく、PHPのプロセスを再利用することができます.同時にFastCGIは、いくつかのプロセスを同時に実行することもできます.これにより,CGIプロセスモードの消費が大きすぎるという問題を解決するとともに,CGIプロセスモードにスレッドセキュリティ問題が存在しないという利点を利用した.
したがって、ISAPIを使用してPHPを実行する場合は、Thread Safe(スレッドセキュリティ)のバージョンを使用する必要があります.一方,FastCGIモードでPHPを実行するとスレッドセキュリティチェックを必要とせず,None Thread Safe(NTS,非スレッドセキュリティ)のバージョンで効率を向上させることができる.