Trouver si le PHP installé est threadsafe ou non threadsafe?

90

Comment savoir si la version installée de PHP est threadsafe ou non thread safe?

Veuillez noter que je ne demande pas la différence entre une installation threadsafe / non thread safe. J'aimerais savoir ce qui est installé actuellement.

Josh
la source
1
voir la réponse dans stackoverflow.com/questions/1623914/…
Haim Evgi
1
@Haim Ce n'est pas ma question Haim. J'ai vu ce fil. J'ai déjà installé PHP sur ce serveur. Il fonctionne avec IIS. Mais, j'ai besoin de savoir quelle configuration a été utilisée pour installer cela ... Configuration Threadsafe / la configuration non theadsafe?
Josh

Réponses:

166

Ouvrez un phpinfo () et recherchez la ligne Thread safety . Pour une version thread-safe, vous devriez trouver enable .

Comme spécifié dans les commentaires de Muhammad Gelbana, vous pouvez également utiliser:

  • Sous Windows: php -i|findstr "Thread"
  • Sur * nix: php -i|grep Thread
grunk
la source
15
Sous Windows: php -i|find "Thread"Sur * nix:php -i|grep Thread
Muhammad Gelbana
7
Note à moi-même: php -i | find "Architecture"pour vérifier si c'est x86 ou x64
somme de contrôle du
@checksum it'sphp -i | grep Architecture
helpse
22

Si vous préférez utiliser la ligne de commande:

  • *rien:

    php -i | grep -i "Thread"
  • Les fenêtres:

    php -i | findstr -i "thread"

Cela devrait vous donner quelque chose comme ceci:

Thread Safety => enabled

ou

Thread Safety => disabled
Mat
la source
Pas une très bonne idée, car la version PHP utilisée par le serveur peut être différente de celle choisie par l'OS (par défaut).
Buffalo
4

Créez un nouveau fichier PHP et insérez-y ce code:

<?php
phpinfo(); ?>

Ensuite, lancez cette page et vous trouverez toutes les informations PHP. Recherchez le terme que vous souhaitez et il vous montrera qu'il est activé.

peroxyde
la source
4

Je trouve juste qu'il est plus facile de regarder le fichier nommé php [version] .dll dans le dossier racine de php. Son soit php [version] .dll ou php [version] ts.dll (ts signifie Thread Safe). Donc, si vous avez installé php7.0.10, allez dans le répertoire qui porte ce nom et vous trouverez un fichier nommé php7ts.dll. C'est une façon très triste de le découvrir, mais ça marche!

Flemin Adambukulam
la source
4

Ensuite, il y a la ZEND_THREAD_SAFEconstante non documentée , qui semble exister depuis PHP 4.3.

<?php

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

https://3v4l.org/tALKX

ShiraNai7
la source
1

Vérifiez si votre installation est Apache Module ou CGI Binary. Voir la question Stack Overflow Qu'est-ce que thread safe ou non thread safe en PHP? .

Phliplip
la source
Comment vérifier cela? Bien sûr, il est utilisé par IIS ... Mais comment puis-je savoir de quel module il s'agit? C'était ma question ... Je ne veux pas demander la différence entre threadsafe / non thread safe. J'ai besoin de savoir si la version installée est thread-safe / non
Josh
Ok j'ai juste enquêté un peu, et oui il y a 2 builds disponibles; sûr et non sûr. Selon ce guide d'installation, les installations IIS7 non thread-safe sont recommandées. Pourriez-vous ouvrir un phpinfo () et voir si le mot «thread» apparaît n'importe où?
Phliplip
oui, phpinfo avait l'information dedans ... Je viens de la trouver ... Merci @Philiplip
Josh
1

À partir d'un 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
la source