Spät im Spiel, aber in Ihrem Code sieht es so aus, als würden Sie "0" für das Ablaufdatum (nicht "5") übergeben, was "niemals ablaufen" bedeutet. Speziell:
%Vor%Sollte sein:
%Vor%Es sei denn, ich missverstehe die PHP-Dokumentation hier , die zeigt, dass der set-Befehl drei dauert Parameter:
%Vor%Bearbeiten: Whoops, ich sehe, dass Sie die Memcache-Erweiterung und nicht Memcached, verwenden, die vier parameter hat . Versuchen Sie vielleicht, die Konstante MEMCACHE_COMPRESSED anstelle von 0 zu verwenden, um zu sehen, ob sie funktioniert:
%Vor%Wie der Code gut aussieht - die nächste Kette in der Zeile ist, entweder Ihre Version der Memcache-PHP-Erweiterung nicht funktioniert, oder Memcached-Server selbst.
Das bekommt einen aber kniffligen. Am einfachsten ist es, zuerst den Memcached-Server auszuschließen. (Es gibt eine PHP-Schnittstelle, die Sie installieren können - aber das hilft Ihnen nicht, herauszufinden, welches Bit.) Also ...
Geben Sie im Terminal (oder im Befehlsfenster von Windows)
ein %Vor%(Hinweis: Der Telnet-Client ist standardmäßig nicht in Windows installiert - gehen Sie zu "Systemsteuerung", "Windows-Funktionen ein- oder ausschalten" und fügen Sie von dort hinzu.)
Damit haben Sie Zugriff auf memcached.
Geben Sie dann
ein %Vor%listet die Speicherelemente in memcached auf.
Hoffentlich haben Sie nur eine Platte, notieren Sie sich die Nummer und geben Sie
ein %Vor%Und dies wird auflisten, was im Cache gespeichert ist.
Wenn dies immer noch "bar" anzeigt (im codierten Format), dann ist es ein Memcached-Server, der nicht funktioniert - upgraden Sie für eine neuere Version.
Wenn "bar" nicht angezeigt wird (oder das Element gerade nicht existiert - Sie erhalten stattdessen ERROR), dann ist es die Memcache-Erweiterung von PHP, die nicht funktioniert. Überprüfen Sie Ihre Version erneut.
Wenn Sie fertig sind, geben Sie
ein %Vor%Alternativ können Sie "memcached" (PHP-Erweiterung) auschecken und Ihren PHP-Code mit diesen Klassen neu schreiben. Es ist neuer. Wenn das immer noch fehlschlägt, ist es definitiv memcached Server; Wenn das funktioniert, war es die php memcache extension.
Es gab einen Fehler im memcached-Server, der Version 1.4.13 bis mindestens 1.4.14 enthielt. Wenn der memcached-Server eine Zeit lang ausgeführt wurde, kam er manchmal in einen Modus, in dem Werte nicht ordnungsgemäß ablaufen konnten .
Neustart des Dienstes hat es für mich repariert, und ich bin zuversichtlich, dass die neueren Versionen es mehr dauerhaft reparieren.