WindowsのPHPスレッドセーフおよび非スレッドセーフ


88

PHP for Windowsをダウンロードしています。ウェブサイトで2つのオプションを取得しました。

  1. PHPスレッドセーフ
  2. PHP非スレッドセーフ

次の質問にお答えください。

  1. 2つの違いは何ですか?お互いの長所と短所は何ですか?
  2. トラフィックの多いeコマースWebサイトを開発していますが、どちらをお勧めしますか。その理由は何ですか。


1
「大量のトラフィック」によって何を理解し、それを確実に得ることができますか?
亀裂

@亀裂-大量のトラフィックは、多くのユーザーが特定の時間にWebサイトを使用することを意味します。なぜ私はそれを確信できないのですか?何か問題がありますか?
11

多くの方法で定義できるのはその「大量のトラフィック」だけであり、一部の人々にとって重いトラフィックは、中程度またはわずかなトラフィックである可能性があります。ここでの有用な指標は、ページヒット数/日/時間/分、あらゆる種類の客観的指標です。
亀裂

回答:


92

PHPのドキュメントから:

スレッドセーフとは、バイナリがWindows上のApache 2などのマルチスレッドWebサーバーコンテキストで機能することを意味します。スレッドセーフティは、各スレッドにローカルストレージコピーを作成することで機能し、データが別のスレッドと衝突しないようにします。

それで私は何を選びますか?PHPをCGIバイナリとして実行する場合、バイナリはリクエストごとに呼び出されるため、スレッドセーフは必要ありません。IIS5やIIS6などのマルチスレッドWebサーバーの場合は、スレッドバージョンのPHPを使用する必要があります。

つまり、PHPの使用方法によって異なります。

  • Apache + LoadModule:スレッドセーフ
  • Apache + FastCGI:非スレッドセーフ
  • IIS:スレッドセーフ
  • IIS + FastCGI:非スレッドセーフ

PHPマニュアルには、すばらしいインストール手順があります。

FastCGIでPHPを実行するAFAIRが推奨される方法であり、高速に実行され、よりきめ細かいセキュリティ構成が可能になります。


11
このページは、「IISでPHPを使用している場合は、非スレッドセーフ(NTS)バージョンのPHPを使用する必要があることを示しています。」「IIS:スレッドセーフ」
umutm

9
はい、FastCGIについて言及しています。スレッドセーフは、ISAPI(php5isapi.dll)を使用する場合に対応
クラック

3
なぜスレッドセーフでないオプションを気にするのですか?それは次のようなものです。もし私が安全な車と安全でない車のどちらかを選ぶことができるとしたら、なぜ安全でない車を選ぶのでしょうか?パフォーマンスはよくなりますか?
Simon East

4
@SimonEast NTSバージョンにはいくつかのオーバーヘッド管理スレッドがあり、すでにWebサーバーによって実行されているため、パフォーマンスが低下します
ReZa

3
@SimonEastその通りです。1回はPHPで、もう1回はWebサーバーで、仕事を2回行うようなものです
ReZa

2

すばやく簡単:Apacheを使用している場合は、Apache24 \ conf \ httpd.confファイルを編集して、「loadmodule」を検索します。loadmoduleが.dllを参照している場合は、次のようになります。

LoadModule php7_module "e:/x64Stack/PHP/php7.1.9/php7apache2_4.dll"
AddHandler application / x-httpd-php .php
PHPIniDir "e:/x64Stack/PHP/php7.1.9"

次に、あなたが望む安全が有効スレッドまたはTS - スレッドセーフバージョン

そうでない場合、CGIでIISまたはApacheを使用している場合は、NTSフレーバーです。

私は複数のスタックを使用し、それらの複数のサーバーとPHPのバージョン内で使用しているため、パス/ phpまたはサーバーのバージョンがあなたを投げさせないようにしてください。


0

Crackに加えて、5.4以降では組み込みのWebサーバーを使用できます(これはうまく機能します!)。


12
あなたが話していることへの何らかの参照を追加する必要があります。組み込みのWebサーバーは何ですか?これはThreadSafeとNotThreadSafeにどのように関係しますか?
Despertar 2014年

1
組み込みのWebサーバーとは、PHPの組み込みのWebサーバーphp -S ip:port)を意味します。ただし、スレッドセーフとの関係についてはわかりません。
David Refoua
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.