Найдите, является ли установленный PHP потокобезопасным или нет?
Как узнать, является ли установленная версия PHP потокобезопасной или нет?
обратите внимание, что я не спрашиваю разницу между потокобезопасной/не потокобезопасной установкой. Я хотел бы узнать, что установлено в настоящее время.
7 ответов:
откройте phpinfo () и найдите строку потокобезопасность. Для потокобезопасной сборки вы должны найти включить.
Как указано в комментарии Мухаммад Gelbana вы также можете использовать:
- На Windows :
php -i|findstr "Thread"
- On * nix:
php -i|grep Thread
если вы предпочитаете использовать командную строку:
* nix:
php -i | grep -i "Thread"
Windows:
php -i | findstr -i "thread"
это должно дать вам что-то вроде этого:
Thread Safety => enabled
или
Thread Safety => disabled
создайте новый PHP файл и вставьте в него этот код:
<?php phpinfo(); ?>
затем запустите эту страницу, и вы найдете всю информацию PHP. Найдите нужный термин, и он покажет вам, что он включен.
Мне просто легче смотреть на файл с именем php[version].dll в корневой папке php. Его либо php[версия].dll или php [версия]ts.dll (ts, стоящий для потокобезопасности). Итак, если у вас установлен php7.0.10, перейдите в каталог с этим именем, и вы найдете файл с именем php7ts.файл DLL. Это очень печальный способ узнать, но он работает!
сценарий:
/** * @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())); }
тогда есть недокументированные
ZEND_THREAD_SAFE
константа, которая, кажется, существует с PHP 4.3.<?php if (ZEND_THREAD_SAFE) { echo 'Thread safe'; } else { echo 'Not thread safe'; }
проверьте, является ли ваша установка Apache Module или CGI Binary. См. раздел вопрос переполнения стека что является потокобезопасным или не потокобезопасным в PHP?.