PHPは、Web開発で広く使用されているスクリプト言語です。コンパイルされた言語とは異なり、PHPコードは実行時に動的に解析する必要があります。 PHPインタープリターは実行中の環境を提供し、2つの主要なランニングモードを備えています:スレッドセーフ(TS)と非スレッドセーフ(NTS)。 TSモードのPHPインタープリターは、マルチスレッド環境をサポートして、スレッドの安全性を確保しています。 NTSモードはマルチスレッドをサポートせず、シングルスレッド環境に適しています。
両方のモードは同じ拡張機能ライブラリを使用できますが、拡張ライブラリはスレッドセーフタイプのPHPと一致する必要があります。そうしないと、実行時に不安定またはエラーが発生します。
次に、現在のPHP環境がTSモードかNTSモードかを確認する方法を紹介します。
LinuxまたはUnixのようなシステムでは、コマンドラインまたはPHP.ini構成ファイルを使用して、PHPがスレッドセーフモードかどうかを判断できます。
端末を開き、次のコマンドを実行します。
php -i |グレップ「スレッドの安全性」
コマンドが実行された後、出力は似ています。
スレッド安全性=>無効
結果が有効になって表示される場合、PHPがスレッドセーフ(TS)バージョンであることを意味します。それ以外の場合、それは非スレッドセーフ(NTS)です。
php.iniファイルを開き、キーワードスレッドの安全性を検索します。通常、TSモードの関連する構成コンテンツは次のとおりです。
; ;スレッドの安全性 ;デフォルト値:有効です ;開発値:有効 ;生産価値:有効
上記と同様の注釈が表示され、デフォルトまたは開発環境値が有効になっている場合、PHPがスレッドセーフバージョンを実行していることを意味します。
PHPがスレッドセーフモードでない場合、デフォルトは非スレッドセーフモードです。次のコマンドラインスクリプトを使用して、さらに確認できます。
php -r 'echo(php_sapi_name()=== "cli" &&!empty(ini_get( "disable_dl"))? "non-thread-safe \ n": "thread-safe \ n"; '
出力結果が非スレッドセーフの場合、PHPがNTSモードであることを意味します。
PHPのスレッドセーフタイプを理解することは、開発環境の構成と拡張ライブラリの互換性にとって非常に重要です。コマンドラインまたはPHP.INIファイルの表示を介して、PHPがTSバージョンかNTSバージョンを実行しているかどうかをすばやく確認して、バージョンの不一致によって引き起こされるエラーを実行しないようにします。拡張機能をインストールするときは、拡張バージョンがPHPスレッドセーフタイプと一致して、安定した信頼性の高い環境を確保することをお勧めします。