Comment savoir si la version installée de PHP est threadsafe ou pas thread-safe?
Veuillez noter que je ne demande pas la différence entre une installation threadsafe/non thread safe. Je voudrais savoir ce qui est actuellement installé.
Ouvrez un phpinfo () et recherchez la ligne Sécurité des threads . Pour une construction thread-safe, vous devriez trouver enable .
Comme spécifié dans les commentaires de Muhammad Gelbana vous pouvez également utiliser:
php -i|findstr "Thread"
php -i|grep Thread
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
Créez un nouveau fichier PHP et insérez ce code dedans:
<?php
phpinfo(); ?>
Ensuite, exécutez cette page et vous trouverez toutes les informations PHP. Recherchez le terme que vous souhaitez, et il vous montrera qu'il est activé.
Je trouve simplement plus facile de regarder le fichier nommé php [version] .dll dans le dossier racine de php. Son 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 savoir, mais ça marche!
Ensuite, il y a les non documentés ZEND_THREAD_SAFE
constante, qui semble exister depuis PHP 4.3.
<?php
if (ZEND_THREAD_SAFE) {
echo 'Thread safe';
} else {
echo 'Not thread safe';
}
À 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()));
}
Vérifiez si votre installation est Apache Module ou CGI Binary. Voir Stack Overflow question Qu'est-ce qui est thread-safe ou non-thread safe en PHP?.