Bei dateibasierten Sitzungen werden sie automatisch vom PHP-Sitzungs-Bereinigungs-Cron bereinigt, sodass die Dateien wahrscheinlich innerhalb von ~ 7200 Sekunden nach der Erstellung gelöscht werden. Selbst auf einer belebten Seite (30k Uniques pro Tag) gibt es normalerweise nur etwa 4.000 Sitzungsdateien in ./var/session - was nichts für einen Linux-Server ist.
Allerdings hängt die Bereinigung tatsächlich von der Cron-Funktion ab - die normalerweise nicht im Verzeichnis ./var/session von Magento aussieht. So sollten Sie ein neues System cron
/usr/bin/find /home/myuser/public_html/var/session -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 -exec rm {} \; >/dev/null 2>&1
Der Standard aufzuräumen Zeit für Sitzungen einrichten 7200 Sekunden, was mehr als ausreichend sein sollte, obwohl Sie die oben ändern können angepasst werden.
Mit Memcache-Sitzungen ist TCP/IP der einzige Overhead, der für eine Einzelserverbereitstellung langsamer als dateibasiert ist. Dann würden Sie stattdessen einen Unix-Socket verwenden, der diesen Overhead beseitigt und bessere Sicherheit bietet. Aber auch Ihre Kundensitzungen werden gekürzt/eingeschränkt, was die Menge an Arbeitsspeicher betrifft, die Sie zuweisen können. Die durchschnittliche Magento-Sitzung ist 4 KB - so können Sie 256 aktive Sitzungen pro zugewiesenem MB unterstützen. Stellen Sie also sicher, dass Sie ein angemessenes Limit festlegen, um zu vermeiden, dass Kunden den Warenkorb/die Sitzung zufällig verlieren. Bedenken Sie auch, dass ein Memcache-Daemon-Neustart alle vorhandenen Sitzungen löscht (BAD!).
Mit Redis (nicht nativ, aber über eine Erweiterung verfügbar) erhalten Sie eine ähnliche Unterstützung wie Memcache, aber mit den zusätzlichen Vorteilen der Persistenz (falls Sie es verwenden möchten). Mit der Cm_Redis-Erweiterung können Sie auch die Sitzungskomprimierung nutzen. Wir haben festgestellt, dass diese Erweiterung sowohl bei CE- als auch EE-Bereitstellungen sehr gut funktioniert.
Mit der DB ist die Standard-Ablaufeinstellung für die Wiederherstellung eine mächtige 1 Woche, also mit der obigen Speichergröße als Beispiel (30k Uniques pro Tag), werden Sie eine DB-Tabellengröße für core_cache_session von etwa 7GB betrachten - was Ihren Laden für fast jeden sitzungsbasierten Betrieb zum völligen Stillstand bringt.
Aus der Erfahrung von Hosting sowohl große (230k Besucher pro Tag) und kleine (< 1k Besucher pro Tag) speichert, unsere Empfehlung:
Einzelserverbereitstellung - Dateien
Multi -server Einsatz - Redis (eine separate Datenbank aus dem Haupt Magento-Cache)
ich schrieb ein paar wirklich gründliche Antworten hier http://magebase.com/magento-tutorials/magento-session-storage-which-to-choose-and-why/comment-page-1/#comment-1980
Gibt es noch weitere Vorteile für die Verwendung der Datenbank für die Sitzungsverwaltung? Ich habe normalerweise das Dateisystem verwendet (ich glaube, das ist Standard). – Chris
Datenbank gespeicherte Sitzungen wäre einfacher zu sichern. Wenn die Datenbank ein separater Server wäre, würde dies den Aufwand auf der Festplatte des Hauptservers verringern, obwohl Sie den Sitzungsordner auch als tmpfs bereitstellen könnten, wenn Sie sich über solche Dinge Sorgen machten. Im Gegensatz zu den Dateien würde eine Datenbank keine Dateizugriffsnummern verwenden, wenn die Anzahl der Sitzungen erhöht wird. Ein Dateisystem hat eine Begrenzung für die Anzahl der Dateien, die es aufnehmen kann, und ein ausgelasteter Server könnte diese Grenze überschreiten. Eine Datenbank könnte auch ihre Tabelle transparent komprimieren, was auch den Platzbedarf reduzieren würde. – clockworkgeek
Ich würde empfehlen, Memcache zum Speichern von Sitzungen zu verwenden, da der Magento Cache Flush mit Memcache alles oder nichts ist - was bedeutet, dass Sie beim Leeren des Caches die Kundensitzungen beenden. Memcache ist großartig für Magento, nur nicht die Sitzungen. –