kostenloser Webspace werbefrei: lima-city


prüfen ob 32bit oder 64bit Server

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    thunderbirdshop

    thunderbirdshop hat kostenlosen Webspace.

    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 ?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hab leider keine Ahnung ob das mit dem PHP-Skript funktioniert, aber:

    1. Dein Hoster sollte dir auskunft darüber geben können.
    2. Wenn dein Server Linux hat:
    Gebe in die Konsole folgendes ein:
    $ uname -a

    Dann kommt eine Ausgabe wie z.b.:
    Linux ora100 2.6.5-7.252-smp #1 SMP Tue Feb 14 11:11:04 UTC 2006 x86_64 x86_64 x86_64 GNU/Linux


    x86_64 = 64bit, bei 32bit steht da i386 oder i486 oder i586 oder i686

    Wenn dein Server Windows hat:
    Wenn Sie Windows Server 2003 verfügen, gibt es zwei Methoden, um zu bestimmen, ob Sie eine 32-Bit-Version oder eine 64-Bit-Version ausgeführt werden. Wenn eine Methode nicht funktioniert, versuchen Sie die andere Methode.
    Methode 1: Anzeigen von Systemeigenschaften in der Systemsteuerung

    Klicken Sie auf Start, und klicken Sie dann auf Ausführen.
    Geben Sie sysdm.cpl ein, und klicken Sie dann auf OK.
    Klicken Sie auf die Registerkarte Allgemein . Das Betriebssystem wird wie folgt angezeigt:
    Für eine 64-Bit-Version des Betriebssystems Windows Server 2003 Enterprise X 64 Edition unter System angezeigt.
    Für eine 32-Bit-Version des Betriebssystems Windows Server 2003 Enterprise Edition unter System angezeigt.

    Methode 2: Fenster Systeminformationen anzeigen

    Klicken Sie auf Start, und klicken Sie dann auf Ausführen.
    Geben Sie "Winmsd.exe", und klicken Sie dann auf OK.
    Wenn Systemübersicht im Navigationsbereich ausgewählt ist, suchen Sie im Detailbereich Prozessor unter Element . Beachten Sie den Wert ein.
    Wenn der Wert für Prozessor mit X 86beginnt, wird der Computer eine 32-Bit-Version von Windows ausgeführt.
    Wenn der Wert für Prozessor mit EM64T oder IA-64beginnt, wird der Computer eine 64-Bit-Version von Windows ausgeführt.

    (Quelle: http://support.microsoft.com/kb/827218/de#method3)

    Wie gesagt, ob das mit PHP funktioniert, weiß ich leider nicht.
  4. burgi

    Co-Admin Kostenloser Webspace von burgi

    burgi hat kostenlosen Webspace.

    thunderbirdshop schrieb:
    wie kann ich mit PHP einfach prüfen,
    ob das Script gerade auf einem Server mit 32bit oder mit 64bit läuft ?

    Diese Möglichkeit hier scheint mir plausibel:
    http://stackoverflow.com/questions/2353473/can-php-tell-if-the-server-os-it-64-bit
    Diese Routine sagt dir zumindest, ob PHP in der 32 oder 64 bit Version läuft. Mehr dürfte ja auch nicht interessant sein für das PHP-Skript an sich!?

    Leicht abgewandelt auch das hier:
    http://stackoverflow.com/questions/8891304/how-to-find-out-if-a-shared-hosting-is-running-32-or-64-bit-with-php

    Beitrag zuletzt geändert: 14.8.2012 22:37:25 von burgi
  5. Autor dieses Themas

    thunderbirdshop

    thunderbirdshop hat kostenlosen Webspace.

    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 ;)



    Beitrag zuletzt geändert: 15.8.2012 2:38:46 von thunderbirdshop
  6. decbin(~0) .. was auch immer das ~0 ist .. ??
    Das ist ein binäres NICHT, das heißt alle bits, die auf 0 stehen werden zur 1 und umgekehrt. Beispiel:
    // 32 Bit-PHP
    ~0 === (int)bindec('11111111111111111111111111111111') === -1;
    // 64 Bit
    ~0 === (int)bindec('1111111111111111111111111111111111111111111111111111111111111111') === -1;
    Die Typenumwandlung zu int ist im Beispiel nötig, da PHP das ganze sonst in einem double speichern würde, dessen Wert wesentlich größer ist!
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!