Найти, если установленный PHP является потокобезопасным или небезопасным? - PullRequest
75 голосов
/ 27 апреля 2011

Как узнать, является ли установленная версия PHP поточно-безопасной или поточно-безопасной?

Обратите внимание, что я не спрашиваю разницу между поточной и не поточной безопасной установкой. Я хотел бы узнать, что установлено в настоящее время.

Ответы [ 7 ]

149 голосов
/ 27 апреля 2011

Откройте phpinfo () и найдите строку Безопасность потока .Для многопоточной сборки вы должны найти enable .

Как указано в комментариях Muhammad Gelbana , вы также можете использовать:

  • В Windows: php -i|findstr "Thread"
  • Вкл. * Nix: php -i|grep Thread
20 голосов
/ 05 марта 2012

Если вы предпочитаете использовать командную строку:

  • * nix:

    php -i | grep -i "Thread"
    
  • Windows:

    php -i | findstr -i "thread"
    

Это должно дать вам что-то вроде этого:

Thread Safety => enabled

или

Thread Safety => disabled
4 голосов
/ 27 апреля 2011

Создайте новый файл PHP и вставьте в него этот код:

<?php
phpinfo(); ?>

Затем запустите эту страницу, и вы найдете всю информацию о PHP. Найдите нужный термин, и он покажет, что он включен.

3 голосов
/ 12 апреля 2017

Мне просто проще посмотреть файл с именем php [version] .dll в корневой папке php.Это либо php [версия] .dll, либо php [версия] ts.dll (ts означает потокобезопасный).Итак, если у вас установлен php7.0.10, перейдите в каталог с таким именем, и вы найдете файл с именем php7ts.dll.Это очень печальный способ выяснить это, но он работает!

2 голосов
/ 03 марта 2018

Тогда есть недокументированная константа ZEND_THREAD_SAFE, которая существует с PHP 4.3.

<?php

if (ZEND_THREAD_SAFE) {
    echo 'Thread safe';
} else {
    echo 'Not thread safe';
}

https://3v4l.org/tALKX

1 голос
/ 28 февраля 2014

Из скрипта:

/**
 * @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()));
}
0 голосов
/ 27 апреля 2011

Проверьте, установлен ли у вас Apache Module или CGI Binary.См. Вопрос переполнения стека Что такое многопоточный или не поточно-безопасный в PHP? .

...