Como posso saber se a versão instalada do PHP é threadsafe ou não thread-safe?
Observe que não estou perguntando a diferença entre uma instalação threadsafe / não thread safe. Gostaria de saber o que está instalado atualmente.
Como posso saber se a versão instalada do PHP é threadsafe ou não thread-safe?
Observe que não estou perguntando a diferença entre uma instalação threadsafe / não thread safe. Gostaria de saber o que está instalado atualmente.
Respostas:
Abra um phpinfo () e procure a linha Thread safety . Para uma construção thread-safe, você deve encontrar enable .
Conforme especificado nos comentários de Muhammad Gelbana, você também pode usar:
php -i|findstr "Thread"
php -i|grep Thread
php -i|find "Thread"
On * nix:php -i|grep Thread
php -i | find "Architecture"
para verificar se é x86 ou x64
php -i | grep Architecture
Se você preferir usar a linha de comando:
* nix:
php -i | grep -i "Thread"
Janelas:
php -i | findstr -i "thread"
Isso deve dar a você algo assim:
Thread Safety => enabled
ou
Thread Safety => disabled
Acabei de achar mais fácil olhar para o arquivo chamado php [versão] .dll na pasta raiz do php. É php [versão] .dll ou php [versão] ts.dll (ts significando Thread Safe). Portanto, se você tiver php7.0.10 instalado, vá para o diretório que tem este nome e você encontrará um arquivo chamado php7ts.dll. É uma maneira muito triste de descobrir, mas funciona!
Depois, há a ZEND_THREAD_SAFE
constante não documentada , que parece existir desde o PHP 4.3.
<?php
if (ZEND_THREAD_SAFE) {
echo 'Thread safe';
} else {
echo 'Not thread safe';
}
Verifique se sua instalação é um Módulo Apache ou CGI Binário. Veja a pergunta sobre Stack Overflow O que é thread-safe ou não-thread-safe em PHP? .
De um script:
/**
* @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()));
}