インストールされているPHPのバージョンがスレッドセーフかどうかを確認するにはどうすればよいですか?
スレッドセーフインストールと非スレッドセーフインストールの違いは問わないことに注意してください。現在何がインストールされているのか知りたい。
インストールされているPHPのバージョンがスレッドセーフかどうかを確認するにはどうすればよいですか?
スレッドセーフインストールと非スレッドセーフインストールの違いは問わないことに注意してください。現在何がインストールされているのか知りたい。
回答:
phpinfo()を開き、「Thread safe」という行を検索します。スレッドセーフなビルドでは、enableを見つける必要があります。
Muhammad Gelbanaのコメントで指定されているように、次のものも使用できます。
php -i|findstr "Thread"
php -i|grep Thread
php -i|find "Thread"
On * nix:php -i|grep Thread
php -i | find "Architecture"
への注意:x86かx64かを確認する
php -i | grep Architecture
phpのルートフォルダーにあるphp [version] .dllという名前のファイルを見る方が簡単だと思います。php [version] .dllまたはphp [version] ts.dll(スレッドセーフを表すts)のいずれかです。したがって、php7.0.10がインストールされている場合は、この名前のディレクトリに移動すると、php7ts.dllという名前のファイルが見つかります。これは非常に悲しい方法ですが、うまくいきます。
次に、ドキュメント化されていないZEND_THREAD_SAFE
定数があります。これは、PHP 4.3以降に存在するようです。
<?php
if (ZEND_THREAD_SAFE) {
echo 'Thread safe';
} else {
echo 'Not thread safe';
}
インストールがApacheモジュールかCGIバイナリかを確認します。Stack Overflowの質問を参照してください。PHPのスレッドセーフまたは非スレッドセーフとは何ですか。。
スクリプトから:
/**
* @return boolean true if PHP is thread safe
*/
function isThreadSafe()
{
ob_start();
phpinfo(INFO_GENERAL);
return preg_match('/Thread\s*Safety\s*enabled/i', strip_tags(ob_get_clean()));
}