Suche auf lima-city
-
in: prüfen ob 32bit oder 64bit Server
geschrieben von thunderbirdshop
gut, Danke
habe jetzt mehrere Varianten zur Auswahl
a) mit ... INT-Werten als Zahl
function server_bit() { $int = "9223372036854775807"; $int = intval($int); if ($int == 9223372036854775807) { return '64'; } elseif ($int == 2147483647) { return '32'; } else { return 'error'; } } echo "<br />". server_bit(). " bit \n";
b) mit .... INT size (in byte)
$sbit1 = (PHP_INT_SIZE * 8); echo "<br />". $sbit1 . " bit \n";
c) mit ... INT max size
$sbit2 = ((PHP_INT_MAX == 2147483647)?'32':'64'); echo "<br />". $sbit2 . " bit \n";
d) mit ... OS Machine type (String: '_64')
]$sbit3 = ((strpos(php_uname('m'), '_64') === FALSE)?'32':'64'); echo "<br />". $sbit3 . " bit \n";
und noch was ganz komisches
e) mit ... decbin() ... ???? ...
function systemBits($iBits = null) { $iSystemBits = strlen(decbin(~0)); return is_null($iBits) ? $iSystemBits : $iSystemBits == $iBits; } echo "<br />systemBits: ". systemBits() ."\n";
decbin(~0) .. was auch immer das ~0 ist .. ??
siehe auch http://php.net/manual/de/function.decbin.php
komisch .. wenn ich in decbin() den größten INT Wert von 64 bit einsetze,
dann bekomme ich nur 63 Zeichen ... ?!
wenn ich -1 (minus Eins) einsetzte, dann bekomme ich 64
TESTS:
echo "<br />Test A\n"; $decbinx = decbin(~0); echo "<br />~0\n"; echo "<br />".$decbinx."\n"; echo "<br />".strlen($decbinx)."\n"; echo "<br />\n"; /* ----- Ausgabe ------ Test A ~0 1111111111111111111111111111111111111111111111111111111111111111 64 --------------------- */ echo "<br />Test B\n"; $decbin1 = decbin(9223372036854775807); echo "<br />9223372036854775807\n"; echo "<br />".$decbin1."\n"; echo "<br />".strlen($decbin1)."\n"; echo "<br />\n"; /* ----- Ausgabe ------ Test B 9223372036854775807 111111111111111111111111111111111111111111111111111111111111111 63 --------------------- */ echo "<br />Test C\n"; $decbin2 = decbin(-1); echo "<br />-1\n"; echo "<br />".$decbin2."\n"; echo "<br />".strlen($decbin2)."\n"; echo "<br />\n"; /* ----- Ausgabe ------ Test C -1 1111111111111111111111111111111111111111111111111111111111111111 64 --------------------- */ echo "<br />Test D\n"; $decbin3 = decbin(-9223372036854775807); echo "<br />-9223372036854775807\n"; echo "<br />".$decbin3."\n"; echo "<br />".strlen($decbin3)."\n"; echo "<br />\n"; /* ----- Ausgabe ------ Test D -9223372036854775807 1000000000000000000000000000000000000000000000000000000000000001 64 --------------------- */ echo "<br />Test E\n"; $decbin4 = decbin(1234); echo "<br />1234\n"; echo "<br />".$decbin4."\n"; echo "<br />".strlen($decbin4)."\n"; echo "<br />\n"; /* ----- Ausgabe ------ Test E 1234 10011010010 11 --------------------- */ echo "<br />Test F\n"; $decbin5 = decbin(-1234); echo "<br />-1234\n"; echo "<br />".$decbin5."\n"; echo "<br />".strlen($decbin5)."\n"; echo "<br />\n"; /* ----- Ausgabe ------ Test F -1234 1111111111111111111111111111111111111111111111111111101100101110 64 --------------------- */
also warum denn decbin(~0) und nicht "einfacher" decbin(-1)
wieso kommt bei einer negativen Zahl eigentlich kein FALSE oder ERROR
egal welche negative Zahl ich einsetzte, kommen (im 64 bit system) immer 64 Zeichen ?!?
EDIT .. ahhh .. ohhh
Negative Zahl braucht ja ein Vorzeichen, dass muss ja auch in die 64 bits mit rein
also ist eine Stelle dann das Vorzeichen ... ach dieser binärcode ... uiuiui ...
ohweh ...
bin da grad etwas abgeschweift in die Welt der Einser und Nuller
... will ja eigentlich nur ermitteln ob System 32 oder 64 bit hat ;)
-
in: prüfen ob 32bit oder 64bit Server
geschrieben von thunderbirdshop
Hallo
wie kann ich mit PHP einfach prüfen,
ob das Script gerade auf einem Server mit 32bit oder mit 64bit läuft ?
idee:
if ( PHP_INT_SIZE == 8 ) { $sbit = 64; } else { $sbit = 32; }
ist das zuverlässig? ... also ist die Konstante PHP_INT_SIZE immer verfügbar?
gibt es bessere Möglichkeit um zu prüfen ob Server mit 32bit oder mit 64bit läuft ?