Checking if your code is running on 64-bit PHP
Check the PHP_INT_SIZE
constant. It'll vary based on the size of the register (i.e. 32-bit vs 64-bit).
In 32-bit systems PHP_INT_SIZE
should be 4, for 64-bit it should be 8.
See http://php.net/manual/language.types.integer.php for more details.
You could write a function like this:
function is_32bit(){
return PHP_INT_SIZE === 4;
}
Then you could use the sample code you posted:
if ( is_32bit() ) {
do_32bit_workaround();
} else {
do_everything_else();
}
Here is an example that can be used from console
For Windows:
php -r "echo (PHP_INT_SIZE == 4 ? '32 bit' : '64 bit').PHP_EOL;" && php -i | findstr Thread
For Linux
php -r "echo (PHP_INT_SIZE == 4 ? '32 bit' : '64 bit').PHP_EOL;" && php -i | grep Thread
Output example:
64 bit
Thread Safety => disabled
A short way to get the number of bits.
strlen(decbin(~0));
How this works:
The bitwise complement operator, the tilde, ~, flips every bit.
@see http://php.net/manual/en/language.operators.bitwise.php
Using this on 0 switches on every bit for an integer.
This gives you the largest number that your PHP install can handle.
Then using decbin() will give you a string representation of this number in its binary form
@see http://php.net/manual/en/function.decbin.php
and strlen will give you the count of bits.
Here is it in a usable function
function is32Bits() {
return strlen(decbin(~0)) == 32;
}