Scopri se il PHP installato è threadsafe o nonthreadsafe?


90

Come faccio a sapere se la versione installata di PHP è thread-safe o non thread-safe?

Si noti che non sto chiedendo la differenza tra un'installazione threadsafe / non thread safe. Vorrei sapere cosa è installato attualmente.



1
@ Haim Questa non è la mia domanda Haim. Ho visto quel filo. Ho già installato PHP su questo server. Funziona con IIS. Ma, ho bisogno di scoprire quale configurazione è stata utilizzata per installare questo ... Configurazione Threadsafe / configurazione non sicura?
Josh

Risposte:


166

Apri un phpinfo () e cerca la riga Thread safety . Per una build thread-safe dovresti trovare enable .

Come specificato nei commenti di Muhammad Gelbana puoi utilizzare anche:

  • Su Windows : php -i|findstr "Thread"
  • Su * nix: php -i|grep Thread

15
Su Windows: php -i|find "Thread"Su * nix:php -i|grep Thread
Muhammad Gelbana

7
Nota per se stessi: php -i | find "Architecture"per verificare se è x86 o x64
checksum

@checksum èphp -i | grep Architecture
helpse

22

Se preferisci utilizzare la riga di comando:

  • * nix:

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

    php -i | findstr -i "thread"

Questo dovrebbe darti qualcosa del genere:

Thread Safety => enabled

o

Thread Safety => disabled

Non è una buona idea, poiché la versione PHP utilizzata dal server può essere diversa da quella rilevata dal sistema operativo (l'impostazione predefinita).
Buffalo

4

Crea un nuovo file PHP e inserisci questo codice al suo interno:

<?php
phpinfo(); ?>

Quindi esegui questa pagina e troverai tutte le informazioni PHP. Cerca il termine che desideri e ti mostrerà che è abilitato.


4

Trovo solo più facile guardare il file denominato php [versione] .dll nella cartella principale di php. È php [versione] .dll o php [versione] ts.dll (ts sta per Thread Safe). Quindi, se hai installato php7.0.10, vai nella directory con questo nome e troverai un file chiamato php7ts.dll. Questo è un modo molto triste per scoprirlo, ma funziona!


4

Poi c'è la ZEND_THREAD_SAFEcostante non documentata , che sembra esistere da PHP 4.3.

<?php

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

https://3v4l.org/tALKX


1

Controlla se la tua installazione è Apache Module o CGI Binary. Vedi la domanda su Stack Overflow Cos'è thread safe o non thread safe in PHP? .


Come lo controllo? Ovviamente è utilizzato da IIS .. Ma come faccio a sapere di che modulo si tratta? Questa era la mia domanda ... Non intendo chiedere la differenza tra threadsafe / non thread safe. Ho bisogno di sapere se la versione installata è thread-safe / no
Josh

Ok, ho solo studiato un po 'e sì, ci sono 2 build disponibili; sicuro e non sicuro. Secondo questa guida all'installazione per IIS7, si consigliano installazioni non thread-safe. Potresti aprire un phpinfo () e vedere se la parola "thread" compare da qualche parte?
Phliplip

sì, phpinfo conteneva le informazioni ... L'ho appena trovato ... Grazie @Philiplip
Josh

1

Da uno 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()));
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.