Im Allgemeinen habe ich folgendes Szenario:Gibt es eine Möglichkeit, einige Sitzungsdaten aus ALLEN Sitzungen zu löschen?
- von Datenbankprodukt und die dazugehörigen Daten Fetch
- Convert abgerufenen Daten zu php 'Produkt' Objekt
- Objekt-Cache Produkt in der Sitzung
Der Cache ist schreibgeschützt, dh Kunden, die Produkte auf der Website anzeigen.
Aber es gibt Anrufe wie getProductIdsByCategory($categoryId)
und die productIds aus diesen Ergebnissen werden auch zwischengespeichert, pro Benutzer, nicht mit dem globalen Cache, den ich gelesen habe.
Ein Problem ist, dass, wenn jemand auf der Admin-Seite ein neues Produkt hinzufügt und es einer Kategorie zuordnet, Kunden die neue productId nicht in ihrem zwischengespeicherten getProductIdsByCategory
haben, bis eine neue Sitzung gestartet wird.
Gibt es eine Möglichkeit, z. B. $_SESSION['x']
von ALLEN Sitzungen auf dem Server zu löschen, wenn ein neues Produkt hinzugefügt wird? Ich möchte nicht alle Sitzungen zerstören, da Kunden dann ihre Logins usw. verlieren.
Oder sollte ich diese zwischengespeicherten productId Suchen in den globalen Cache verschieben?
p.s verwende einen benutzerdefinierten Cache, nicht Memcached oder ähnliches.
Dank
Das klingt nach einer wirklich guten Idee. Obwohl ich denke, dass ich diese Flagge nach z. B. einer halben Stunde oder so löschen müsste? –
Ich verstehe nicht warum. Es kann einfach weiter in die Vergangenheit gehen, und Sitzungen, die ihre zwischengespeicherten Daten in jüngerer Zeit erhalten haben, werden davon nicht gestört. – chaos
Sie haben Recht, ich werde es versuchen. Danke –