web-dev-qa-db-ja.com

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

PHP for Windowsをダウンロードしています。ウェブサイトに2つのオプションがあります。

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

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

  1. 2つの違いは何ですか?互いの長所と短所は何ですか?
  2. 大量のトラフィックを抱えるeコマースWebサイトを開発していますが、どちらを推奨しますか?
79
Sumit Gupta

From PHP documentation:

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

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

したがって、PHPの使用方法に依存します。

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

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

AFAIRを実行しているPHPを使用することをお勧めします。より高速に実行され、よりきめ細かいセキュリティ設定が可能です。

84
Crack

すばやく簡単:Apacheを使用している場合は、Apache24\conf\httpd.confファイルを編集して、「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 [〜#〜]-スレッドセーフバージョンを使用します。

それ以外の場合は、IISまたはApacheとCGIを使用し、NTSフレーバーを使用します。

私は複数のスタックを使用し、それらの複数のサーバーおよびPHPのバージョン内で、パス/ PHPまたはサーバーのバージョンがユーザーをスローしないようにします。

1
Jim

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

0
Saso.Filipovic