web-dev-qa-db-fra.com

Trouvez si le PHP installé est thread-safe ou non thread-safe?

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

76
Josh

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:

  • Sous Windows: php -i|findstr "Thread"
  • Sur * nix: php -i|grep Thread
149
grunk

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
21
Matt

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

4
peroxide

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!

3
Flemin Adambukulam

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';
}

https://3v4l.org/tALKX

2
ShiraNai7

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

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

0
Phliplip