簡體   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