PHP のスレッド セーフについて
PHP では、関連して「スレッド セーフ」と「非スレッド セーフ」という用語が使用されることがあります。利用可能な PHP バイナリへ。この記事は、これらの用語の意味と影響を説明することを目的としています。
マルチスレッド環境
Web サーバーは、受信リクエストをさまざまな方法で処理できます。一般的なアプローチの 1 つは、スレッドを使用することです。この場合、各受信リクエストには専用のスレッドが割り当てられます。
Web サーバーにおける PHP の役割
PHP は、HTTP リクエストの処理には直接関与しません。 ; Apache HTTP などの Web サーバーがそれを担当します。 PHP を Apache と統合するには、Web サーバー内に PHP を組み込む mod_php のようなモジュールが使用されます。
スレッド セーフティと mod_php
Apache がスレッドを使用する場合 (ワーカー MPM) )、その環境内で動作する際の問題を回避するには、PHP がスレッドセーフである必要があります。これは、PHP コードとデータ構造が複数のスレッドによる同時実行を処理できるように設計される必要があることを意味します。
PHP スレッド セーフティに関する議論
PHP のスレッド セーフティは議論の多い問題です。理論的には可能ですが、その信頼性と予期せぬ動作の可能性について懸念があります。
実際に非スレッド MPM を使用する
PHP スレッドの不確実な性質を考慮すると、安全性を確保するため、Web サーバー環境では一般にこれを避けることをお勧めします。 Apache のプリフォーク MPM (スレッドを使用しない) は、PHP と組み合わせるとより安全なオプションです。
その他のシナリオ
コマンドで PHP を使用する場合、スレッドの安全性は関係ありません。 -line 環境、または FastCGI または他のプロセス間通信メカニズム (例: nginx、 lighttpd).
どのバイナリを使用しますか?
スレッドセーフ PHP バイナリと非スレッドセーフ PHP バイナリの選択は、主に PHP を使用しているかどうかに基づきます。マルチスレッド環境。ほとんどの実用的なアプリケーションでは、スレッド セーフに対する特別な必要性がない限り、非スレッド セーフ バージョンを使用することをお勧めします。
以上が私の Web サーバーにはスレッドセーフ PHP が必要ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。