Кто-нибудь знает способ проверки внутри PHP, если скрипт работает как 32-разрядный, так и 64-битный? В настоящее время я использую PHP 5.3.5.
В идеале я хотел бы написать функцию, чтобы мой код выглядел так:
if( is_32bit() === true ) { do_32bit_workaround(); } do_everything_else();
У кого-нибудь есть мысли?
Проверьте константу PHP_INT_SIZE
. Он будет меняться в зависимости от размера регистра (например, 32-битного и 64-битного).
В 32-битных системах PHP_INT_SIZE
должно быть 4 , для 64-битного – 8 .
Подробнее см. http://www.php.net/manual/en/language.types.integer.php .
Вы можете написать такую функцию:
function is_32bit(){ return PHP_INT_SIZE === 4; }
Затем вы можете использовать образец кода, который вы опубликовали:
if ( is_32bit() ) { do_32bit_workaround(); } else { do_everything_else(); }
Я просто огляделся и не нашел ничего слишком многообещающего. Есть хороший шанс, что вы можете использовать $_SERVER['SERVER_SOFTWARE']
чтобы сказать (проверьте, что он печатает в вашей системе), но сделать этот переносной и всегда точный, вероятно, не выполнимо.
Попробуйте эту простую функцию PHP
<?php function maxBit() { list($return, $number) = array(0, 0); // Start process while (true) { // Get number at x bits $numX = intval(bcsub(bcpow('2', "{$return}"), '1')); // Check number if ($numX != 0 && $number == $numX) { break; } // Update number $number = $numX; // Update return value $return++; } return $return; } // Check is 64bit if (maxBit() == 64) { // Write your code here... }