PHP-Memcache

Shooter2k

Erfahrenes Mitglied
Hallo Forum,
ich habe eine Frage zum Thema PHP-Memcache. Ich möchte prüfen ob sich ein bestimmter Wert von einem Schlüssel inzwischen geändert hat oder gleichgeblieben ist.

Zb Key = userID Wert = email

Wenn der Wert "email" gleichgeblieben ist, dann sollte er den Memcache einfach ausgeben. Falls dies nicht der Fall ist sollte er Ihn durch den neuen Wert überschreiben. Glaube das geht mit replace.

PHP:
$memcache->set('userID1', 'test@test.de')
$get_result = $memcache->get('userID1');

Wie frage ich nun ab, ob sich etwas geändert hat?
Besten Dank

gruß
 
PHP:
if($memcache->get('userID1') != $mailadresse){
    //TODO: Mach etwas, die Mail hat sich geändert
    //gemäss php-Doku
    $memcache->replace('userID1', $mailadresse);
}
 
Die Lösung von Yaslaw ist aber nur gut wenn du die Adresse schon hast.
Besser wäre es wenn du an allen Stellen bei denen die neue emailadresse in die Datenbank geschrieben wird den Eintrag in Memcached einfach löschst (oder aktualisierst).
 
Vielen Dank für die Antworten. Wie würde denn der Vergleich aussehen, wenn ich statt der Emailadresse eine DB "query" abgleichen möchte? Also:

PHP:
$result = MySQL::query('SELECT * FROM user WHERE id = 1');

if($memcache->get('userID1') != $result){ // ********
    //TODO: Mach etwas
   
}

Vielen Dank
 
Zuletzt bearbeitet:
Hi Yaslaw,

das Problem hat sich schon erledigt. Wusste nicht, dass ich auch QUERYS abgleichen kann. Das funktioniert wie bei der Email.

PHP:
$result = MySQL::query('SELECT * FROM user WHERE id = 1');

if($memcache->get('userID1') != $result){ // ********
    //TODO: Mach etwas
   
}

Danke nochmal

gruß
 
öhm - am Rande. MySQL ist eine eigene Klasse?
Normalreweise kommt bei XXXX::query() nur die Ressource zurück die man nachher noch weiter verarbeiten muss, aber nicht gleich das erste Feld des Queries.
 
Genau MYSQL ist eine eigene DB Klasse. Liefert direkt ein Array zurück. Habe es gerade getestet sobald ich die DB Eintrag ändere, wird es erkannt und somit !=. Danach mache ich dann ein memcache - replace und fertig.
 
gut, query() gibt einen Array zurück. Aber dan ist $result ein Array und somit solltest du doch eher mit in_array oder sowas testen.
 
Zurück