Как узнать, является ли установленная версия PHP потокобезопасной или нет?
Обратите внимание, что я не спрашиваю о разнице между поточно-поточно / небезопасной установкой. Я хотел бы узнать, что сейчас установлено.
Как узнать, является ли установленная версия PHP потокобезопасной или нет?
Обратите внимание, что я не спрашиваю о разнице между поточно-поточно / небезопасной установкой. Я хотел бы узнать, что сейчас установлено.
Ответы:
Откройте phpinfo () и найдите строку Безопасность потоков . Для поточно-ориентированной сборки вы должны найти enable .
Как указано в комментариях Мухаммада Гелбаны, вы также можете использовать:
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
Если вы предпочитаете использовать командную строку:
* nix:
php -i | grep -i "Thread"
Windows:
php -i | findstr -i "thread"
Это должно дать вам что-то вроде этого:
Thread Safety => enabled
или
Thread Safety => disabled
Мне просто проще посмотреть файл с именем php [version] .dll в корневой папке php. Это либо php [версия] .dll, либо php [версия] ts.dll (ts означает Thread Safe). Итак, если у вас установлен 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. См. Вопрос о переполнении стека. Что такое потокобезопасность или небезопасность в 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()));
}