Wie überprüfe ich, ob Memcache oder Memcached für PHP installiert ist?

Lesezeit: 4 Minuten

Wie teste ich ggf Speicher oder Zwischenspeicher (für PHP) auf meinem Apache-Webserver installiert ist?

Speicher ist ein Caching-Daemon, der speziell für dynamische Webanwendungen entwickelt wurde, um die Datenbanklast zu verringern, indem Objekte im Speicher gespeichert werden.

Sie können sich phpinfo() ansehen oder prüfen, ob eine der Funktionen von memcache verfügbar ist. Überprüfen Sie abschließend, ob die Memcache Klasse existiert oder nicht.

z.B

if(class_exists('Memcache')){
  // Memcache is enabled.
}

  • Gute Informationen, aber denken Sie daran, dass die Funktion class_exists Ihnen mitteilt, ob es JEDE Klasse in der definierten include/require-Hierarchie mit dem Namen Memcache gibt.

    – Alan Sturm

    23. September 2009 um 2:39 Uhr

  • Würde sich eine andere Klasse “memcache” nennen? macht das irgendein Framework oder eine Bibliothek?

    –Robin Rodricks

    23. September 2009 um 2:51 Uhr

  • @Jeremy Ich habe noch nie etwas anderes namens Memcache gesehen, also bist du wahrscheinlich sicher, besonders alles, was du auf der Seite hast, ist class_exists()

    – Darryl Hein

    23. September 2009 um 2:54 Uhr

  • Alternative wäre die Überprüfung der Erweiterungsversion? phpversion(‘memcache’)

    – Mauris

    23. September 2009 um 3:05 Uhr

  • noch besser: if(class_exists('Memcache',false)) das funktioniert gut mit autoload()

    – rätoromanisch

    9. Dezember 2012 um 12:16 Uhr

warum nicht die verwenden extension_loaded() Funktion?

  • Das ist viel besser als zu verwenden class_exists!

    – buffcoredave

    9. Dezember 2014 um 11:13 Uhr

  • Nur weil die Erweiterung geladen ist, bedeutet das nicht, dass sie tatsächlich funktioniert.

    – S. Kobold

    4. Mai 2018 um 20:40 Uhr

Benutzer-Avatar
Bijay Rungta

Verwenden Sie diesen Code, um nicht nur zu prüfen, ob die Memcache-Erweiterung aktiviert ist, sondern auch, ob der Daemon ausgeführt wird und Daten erfolgreich speichern und abrufen kann:

<?php
if (class_exists('Memcache')) {
    $server="localhost";
    if (!empty($_REQUEST['server'])) {
        $server = $_REQUEST['server'];
    }
    $memcache = new Memcache;
    $isMemcacheAvailable = @$memcache->connect($server);

    if ($isMemcacheAvailable) {
        $aData = $memcache->get('data');
        echo '<pre>';
        if ($aData) {
            echo '<h2>Data from Cache:</h2>';
            print_r($aData);
        } else {
            $aData = array(
                'me' => 'you',
                'us' => 'them',
            );
            echo '<h2>Fresh Data:</h2>';
            print_r($aData);
            $memcache->set('data', $aData, 0, 300);
        }
        $aData = $memcache->get('data');
        if ($aData) {
            echo '<h3>Memcache seem to be working fine!</h3>';
        } else {
            echo '<h3>Memcache DOES NOT seem to be working!</h3>';
        }
        echo '</pre>';
    }
}
if (!$isMemcacheAvailable) {
    echo 'Memcache not available';
}

?>

  • Stellen Sie sicher, dass Sie installieren php5-memcache PHP-Bibliothek, um dies stattdessen zu überprüfen php5-memcached Das Code-Snippet ist auch unter gepostet gist.github.com/rungss/5185410

    – Bijay Rungta

    18. März 2013 um 6:35 Uhr

  • +1 für das Posten der einzigen Antwort, die tatsächlich auf einen gültigen Memcache-Daemon testet, anstatt nur auf das Vorhandensein der PHP-Erweiterung zu prüfen.

    – Simon Osten

    20. Juni 2014 um 7:04 Uhr

  • Denken Sie daran, dass Memcache != Memcached ist. Wenn Sie also Memcache testen möchten, müssen Sie zusätzlich zur Verwendung von class_exists(‘Memcached’) $memcache->addServer($server, 11211, 1); statt ->connect(), und ->set(‘data’, $aData, 300); anstelle von ->set() oben.

    – Greg

    23. Oktober 2016 um 5:01 Uhr

Ich weiß, dass dies ein alter Thread ist, aber es gibt einen anderen Weg, den ich für jede Erweiterung nützlich gefunden habe.

Laufen

php -m | grep <module_name>

In diesem speziellen Fall:

php -m | grep memcache

Wenn Sie alle PHP-Module auflisten möchten, dann:

php -m

Abhängig von Ihrem System erhalten Sie eine Ausgabe ähnlich der folgenden:

[PHP Modules]
apc
bcmath
bz2
... lots of other modules ...
mbstring
memcache
 ... and still more modules ...
zip
zlib

[Zend Modules]

Sie können sehen, dass sich Memcache in dieser Liste befindet.

Benutzer-Avatar
antitoxisch

Beachten Sie, dass alle class_exists, extensions_loadedund function_exists nur überprüfen die Verbindung zwischen PHP und die memcache Paket.

Um tatsächlich zu prüfen, ob Memcache installiert ist, müssen Sie entweder:

  • Kennen Sie die Betriebssystemplattform und verwenden Sie Shell-Befehle, um zu überprüfen, ob das Memcache-Paket installiert ist
  • oder testen Sie, ob die Memcache-Verbindung auf dem erwarteten Port hergestellt werden kann

BEARBEITEN 2: OK, eigentlich ist hier eine einfachere Komplettlösung:

if (class_exists('Memcache')) {
    $memcache = new Memcache;
    $isMemcacheAvailable = @$memcache->connect('localhost');
}
if ($isMemcacheAvailable) {
    //...
}

Veralteter Code unten


BEARBEITEN: Eigentlich müssen Sie PHP zwingen, zuerst einen Fehler bei Warnungen auszulösen. Schauen Sie sich diese Antwort auf die SO-Frage an.

Anschließend können Sie die Verbindung testen über:

try {
    $memcache->connect('localhost');
} catch (Exception $e) {
    // well it's not here
}

Benutzer-Avatar
gutt

Du hast mehrere Möglichkeiten 😉

$memcache_enabled = class_exists('Memcache');
$memcache_enabled = extension_loaded('memcache');
$memcache_enabled = function_exists('memcache_connect');

Benutzer-Avatar
Danno

Es kann relevant sein zu sehen, ob es auch in PHP über die Befehlszeile ausgeführt wird.

<path-to-php-binary>php -i | grep memcache

1311270cookie-checkWie überprüfe ich, ob Memcache oder Memcached für PHP installiert ist?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy