Ich betreue einen Magento-Shop mit 400-500 Besuchern und 40-50 Bestellungen pro Tag. Kürzlich wurde das System von Magento EE 1.14.2.4 auf Magento EE 1.14.3.2 aktualisiert und ich habe einige merkwürdige Ausnahmen in den Protokollen festgestellt:
exception 'Mage_Core_Model_Session_Exception' in
/var/www/.../app/code/core/Mage/Core/Model/Session/Abstract/Varien.php:418
Ich habe diese Ausnahme verfolgt und weiß, dass sie ausgelöst wird, weil der folgende Sitzungsvalidierungscode die Sitzung nicht validieren kann:
class Mage_Core_Model_Session_Abstract_Varien extends Varien_Object
{
// ...
protected function _validate()
{
// ...
if ($this->useValidateSessionExpire()
&& isset($sessionData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP])
&& $sessionData[self::VALIDATOR_SESSION_EXPIRE_TIMESTAMP] < time() ) {
Dieser if-Block wurde der Datei mit der neuesten Version von Magento hinzugefügt. Und dies ist anscheinend eine Bremsänderung, siehe weitere Details unten.
Die Ausnahme passiert ziemlich oft, wie etwa ein Dutzend Mal pro Tag. Aber ich bin nicht in der Lage, Bedingungen, die zur Ausnahme führen, neu zu erstellen, es sei denn, ich habe die obige Bedingung wörtlich erfüllt. Die Ausnahmen treten am häufigsten auf Produktdetailseiten und im letzten Schritt einer Seitenprüfung auf. Der Shop ist ein b2b-Shop. Der Benutzer muss eingeloggt sein, um die Produktseite zu sehen oder zur Kasse zu gehen. Dies bedeutet, dass der Benutzer zur Anmeldeseite umgeleitet wird, wenn die Sitzung ungültig ist / abgelaufen ist. Momentan ist es mir wichtiger, dieses Problem beim Checkout zu beheben.
Was passiert aus Benutzersicht: Der Benutzer füllt den Einkaufswagen, geht zur Kasse und erreicht den letzten Schritt. Dann drückt er den "Bestellung abschicken" -Button und es passiert nichts. Hinter den Kulissen führt Magentos JS eine AJAX-Anfrage aus und JS erwartet, JSON zurück zu erhalten. Wenn dieser Fehler auftritt, wird der HTML-Code der Anmeldeseite zurückgegeben, der nicht von JavaScript analysiert werden kann, und es geschieht einfach nichts. Das ist super verwirrend für User.
Nun, das ist kein vollständiges Benutzerszenario, wir haben uns mit den Benutzern in Verbindung gesetzt und sie haben uns gesagt, dass sie einige Tage zwischen dem Füllen des Einkaufswagens und dem Absenden der Bestellung gewartet haben. Was das genau bedeutet, ist schwer herauszufinden, weil sich die Leute einfach nicht daran erinnern.
Lebensdauer der PHP-Sitzung - 350000 (~ 4 Tage in Sekunden) Lebensdauer der Cookies - 345600 (4 Tage)
Hier ist die eigentliche Frage: Wie kann ich herausfinden, welche Art von Benutzerverhalten zur Ausnahme geführt hat?
UPDATE Soweit ich weiß, dass in folgenden Klassen Ausnahmen gemäß der gestellten Anfrage auftreten, bedeutet das für mich leider nichts.
/catalogsearch/result/?q=… Mage_Core_Model_Session
/checkout/cart/ Mage_Core_Model_Session
/checkout/onepage/saveOrder/… Mage_Rss_Model_Session
/customer/account/loginPost/ Mage_Core_Model_Session
/customer/account/loginPost/ Mage_Reports_Model_Session
/customer/account/logout/ Mage_Reports_Model_Session
/catalog/product/view/… Mage_Reports_Model_Session
/catalog/product/view/… Mage_Tag_Model_Session
UPDATE 2 : Sitzungen werden in Dateien gespeichert und vom Garbage Collector für PHP-Sitzungen bereinigt. Ob dies eine gute Wahl ist oder nicht, ist nicht Gegenstand dieser Frage.