Heim  >  Artikel  >  Backend-Entwicklung  >  memcached – PHP implementiert das Problem der Memcache-Speichersitzung

memcached – PHP implementiert das Problem der Memcache-Speichersitzung

WBOY
WBOYOriginal
2016-08-04 09:20:44876Durchsuche

Setzen Sie zunächst session.save_handler = Benutzer ein, beachten Sie, dass es sich nicht um Memcache handelt.

Dann implementiert die benutzerdefinierte Klasse Session die SessionHandlerInterface-Schnittstelle, erstellt das Objekt und registriert session_set_save_handler, sodass jedes Mal zum Beispiel:

$_SESSION['aaa'] = '123';

, PHP ruft Session->write() auf. In der Funktion füge ich Datensätze mit sess- als Präfix und session_id() als Suffix manuell in den Memcache ein, zum Beispiel: key = sess-4fqrbhed9f3grq4p4ssbljg867.

Im Moment gibt es ein sehr seltsames Problem, wenn ich $_SESSION['aaa'] = '123' folge und zum Memcache gehe, um die Daten abzurufen, die dieser session_id() entsprechen lösche es. $_SESSION['aaa'] = '123'; Danach werden die Daten im Memcache automatisch gelöscht.

Antwortinhalt:

Setzen Sie zunächst session.save_handler = Benutzer ein, beachten Sie, dass es sich nicht um Memcache handelt.

Dann implementiert die benutzerdefinierte Klasse Session die SessionHandlerInterface-Schnittstelle, erstellt das Objekt und registriert session_set_save_handler, sodass jedes Mal zum Beispiel:

$_SESSION['aaa'] = '123';

, PHP ruft Session->write() auf. In der Funktion füge ich Datensätze mit sess- als Präfix und session_id() als Suffix manuell in den Memcache ein, zum Beispiel: key = sess-4fqrbhed9f3grq4p4ssbljg867.

Im Moment gibt es ein sehr seltsames Problem, wenn ich $_SESSION['aaa'] = '123' folge und zum Memcache gehe, um die Daten abzurufen, die dieser session_id() entsprechen lösche es. $_SESSION['aaa'] = '123'; Danach werden die Daten im Memcache automatisch gelöscht.

php.ini ändern
session.save_handler = memcache
session.save_path = tcp://127.0.0.1:11211;tcp://127.0.0.1:11212;tcp://127.0.0.1: 11213

Gelöst, weil SessionHandlerInterface::read() nicht implementiert ist, was dazu führt, dass $_SESSION nach der Aktualisierung auf einen Nullwert gesetzt wird, was dann dazu führt, dass dieser Nullwert nach dem Aufruf von write geschrieben wird.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn