44 votes

Vérifier si votre code s'exécute sur PHP 64 bits

Quelqu'un connaît-il un moyen de vérifier dans PHP si le script s'exécute en 32 bits ou en 64 bits ? Actuellement, j'utilise PHP 5.3.5.

Idéalement, j'aimerais écrire une fonction pour que mon code ressemble à ceci :

 if( is_32bit() === true ) {
    do_32bit_workaround();
}
do_everything_else();

Quelqu'un a des idées?

97voto

coreyward Points 26109

Vérifiez la constante PHP_INT_SIZE Cela variera en fonction de la taille du registre (c'est-à-dire 32 bits contre 64 bits).

Dans les systèmes 32 bits, PHP_INT_SIZE devrait être 4 , pour 64 bits, il devrait être 8 .

Voir http://php.net/manual/language.types.integer.php pour plus de détails.

13voto

Tim Penner Points 3140

Vous pouvez écrire une fonction comme celle-ci :

 function is_32bit(){
  return PHP_INT_SIZE === 4;
}

Ensuite, vous pouvez utiliser l'exemple de code que vous avez publié :

 if ( is_32bit() ) {
    do_32bit_workaround();
} else {
    do_everything_else();
}

4voto

naT erraT Points 104

Voici un exemple utilisable depuis la console

Pour les fenêtres:

 php -r "echo (PHP_INT_SIZE == 4 ? '32 bit' : '64 bit').PHP_EOL;" && php -i | findstr Thread

Pour Linux

 php -r "echo (PHP_INT_SIZE == 4 ? '32 bit' : '64 bit').PHP_EOL;" && php -i | grep Thread

Exemple de sortie :

 64 bit
Thread Safety => disabled

0voto

Jon Points 194296

J'ai juste regardé autour de moi et je n'ai rien trouvé de très prometteur. Il y a de fortes chances que vous puissiez utiliser $_SERVER['SERVER_SOFTWARE'] pour le dire (vérifiez ce qu'il imprime sur votre système), mais rendre cela portable et toujours précis n'est probablement pas faisable.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X