ホームページ >バックエンド開発 >PHPチュートリアル >PHP のスレッドセーフ バージョンと非スレッドセーフ バージョンの違いの詳細な分析_PHP チュートリアル

PHP のスレッドセーフ バージョンと非スレッドセーフ バージョンの違いの詳細な分析_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 14:59:21804ブラウズ

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 スレッド セーフです。

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 には、ISAPI と FastCGI という 2 つの実行モードがあります。

ISAPI の実行メソッドは、ユーザーのリクエスト後に実行できる DLL ダイナミック ライブラリの形式で使用され、ユーザーのリクエストを処理した後すぐに消えるわけではないため、実行効率を向上させるためにスレッドの安全性チェックが必要です。プログラムなので、ISAPI を使用して PHP を実行する場合は、スレッド セーフ バージョンを選択することをお勧めします。

FastCGI の実行メソッドは単一のスレッドを使用して操作を実行するため、スレッド セーフティ チェックの保護を削除することで、PHP の実行効率を向上させることが推奨されます。非スレッドセーフバージョンを選択します。

Apache サーバーの場合は通常 isapi 方式が選択され、nginx サーバーの場合は FastCGI 方式が選択されます。


http://www.bkjia.com/PHPjc/328149.html

tru​​ehttp://www.bkjia.com/PHPjc/328149.html技術記事 2000 年 10 月 20 日にリリースされた最初の Windows バージョンの PHP 3.0.17 以降、すべてのバージョンがスレッド セーフになっています。これは、マルチプロセス作業メソッドを使用する Linux/Unix システムとは異なり、Windows ではスレッド セーフであるためです。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。