繁体   English   中英

检查您的代码是否在 64 位 PHP 上运行

[英]Checking if your code is running on 64-bit PHP

如果脚本以 32 位或 64 位运行,有人知道在 PHP 中检查的方法吗? 目前我使用的是 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://php.net/manual/language.types.integer.php

你可以写一个这样的函数:

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

然后您可以使用您发布的示例代码:

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

获取位数的一种简短方法。

    strlen(decbin(~0));

这是如何工作的:

按位补码运算符,波浪号~ ,翻转每一位。

@see http://php.net/manual/en/language.operators.bitwise.php

0上使用它会打开整数的每一位。

这为您提供了 PHP 安装可以处理的最大数量。

然后使用 decbin() 将以二进制形式为您提供此数字的字符串表示

@see http://php.net/manual/en/function.decbin.php

和 strlen 会给你位数。

这是一个可用的功能

function is32Bits() {
    return strlen(decbin(~0)) == 32;
}

这是一个可以从控制台使用的示例

对于 Windows:

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

对于 Linux

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

输出示例:

64 bit
Thread Safety => disabled

我只是环顾四周,没有发现任何有希望的东西。 很有可能您可以使用$_SERVER['SERVER_SOFTWARE']来告诉(检查它在您的系统上打印的内容),但是使其便携且始终准确可能是不可行的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM