ホームページ  >  記事  >  バックエンド開発  >  PHP のスレッドセーフ バージョンと非スレッドセーフ バージョンの違い

PHP のスレッドセーフ バージョンと非スレッドセーフ バージョンの違い

巴扎黑
巴扎黑オリジナル
2016-11-11 13:28:361005ブラウズ

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。

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

FastCGI 実行メソッドは単一のスレッドを使用して操作を実行するため、スレッド セーフ チェックを実行する必要はありません。スレッド セーフ チェックを保護すると実行効率が向上するため、FastCGI を使用して PHP を実行する場合は、非スレッド セーフ バージョンを選択することをお勧めします。

Apacheサーバーの場合は一般的にisapi方式が選択され、nginxサーバーの場合はFastCGI方式が選択されます。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。