kostenloser Webspace werbefrei: lima-city


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 ?

Login zum Webhosting ohne Werbung!