Descobrir se o PHP instalado é threadsafe ou nonthreadsafe?

90

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.

Josh
fonte
1
veja a resposta em stackoverflow.com/questions/1623914/…
Haim Evgi
1
@Haim Essa não é minha pergunta Haim. Eu vi esse tópico. Já tenho o PHP instalado neste servidor. Está trabalhando com IIS. Mas, eu preciso descobrir qual configuração foi usada para instalar este ... Configuração Threadsafe / a configuração não theeadsafe?
Josh

Respostas:

166

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:

  • No Windows: php -i|findstr "Thread"
  • Em * nix: php -i|grep Thread
grunhido
fonte
15
No Windows: php -i|find "Thread"On * nix:php -i|grep Thread
Muhammad Gelbana
7
Nota para mim mesmo: php -i | find "Architecture"para verificar se é x86 ou x64
checksum
@checksum éphp -i | grep Architecture
helpse
22

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
Matt
fonte
Não é uma ideia muito boa, já que a versão do PHP usada pelo servidor pode ser diferente daquela escolhida pelo SO (o padrão).
Buffalo
4

Crie um novo arquivo PHP e insira este código nele:

<?php
phpinfo(); ?>

Em seguida, execute esta página e você encontrará todas as informações do PHP. Pesquise o termo que deseja e ele mostrará que está ativado.

peróxido
fonte
4

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!

Flemin Adambukulam
fonte
4

Depois, há a ZEND_THREAD_SAFEconstante não documentada , que parece existir desde o PHP 4.3.

<?php

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

https://3v4l.org/tALKX

ShiraNai7
fonte
1

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? .

Phliplip
fonte
Como faço para verificar isso? Claro que está sendo usado pelo IIS ... Mas como faço para descobrir que módulo é? Essa foi a minha pergunta ... Eu não quero perguntar a diferença entre threadsafe / non thread safe. Preciso saber se a versão instalada é thread-safe / não
Josh
Ok, eu investiguei um pouco, e sim, existem 2 compilações disponíveis; seguro e não seguro. De acordo com este guia de instalação para IIS7, instalações não seguras com thread são recomendadas. Você poderia abrir um phpinfo () e ver se a palavra 'thread' aparece em algum lugar?
Phliplip
sim, phpinfo tinha a informação nele ... Acabei de encontrar ... Obrigado @Philiplip
Josh
1

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()));
}
Elvis Ciotti
fonte