Memcache + PHP - Warum Daten nicht ablaufen?

9

Ich habe ein einfaches Beispiel, in dem ich einen Wert für 5 Sekunden festlege. Das Problem ist, dass nach 5 Sekunden; Ich bekomme immer noch einen Wert, wenn ich 'falsch' erwartet habe.

%Vor%

Hier ist die Version des Memcache-Servers

Serverversion: 1.4.13

    
shergill 03.05.2012, 04:34
quelle

3 Antworten

4

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%     
kiddailey 24.12.2012 07:54
quelle
1

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.

    
Robbie 04.05.2012 04:04
quelle
0

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.

    
Kevin 24.10.2015 04:52
quelle

Tags und Links