Günde 400-500 ziyaretçi ve 40-50 sipariş içeren bir Magento mağazasına bakıyorum. Son zamanlarda sistem Magento EE 1.14.2.4'ten Magento EE 1.14.3.2'ye yükseltildi ve günlüklerde bazı garip istisnalar fark ettim:
exception 'Mage_Core_Model_Session_Exception' in
/var/www/.../app/code/core/Mage/Core/Model/Session/Abstract/Varien.php:418
Bu istisnayı takip ediyordum ve aşağıdaki oturum doğrulama kodu oturumu doğrulayamadığı için işten çıkarıldığını biliyorum:
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() ) {
Bu if-bloğu Magento'dan en son sürümle dosyaya eklendi. Ve bu görünüşte bir frenleme değişikliği, daha fazla ayrıntıya bakın.
İstisna, günde bir düzine kez gibi oldukça sık görülür. ancak yukarıdaki koşulda tam anlamıyla yerine getirmediğim sürece, istisnaya neden olan koşulları yeniden oluşturamıyorum. İstisnalar çoğunlukla ürün detay sayfalarında ve bir sayfa ödeme işleminin son adımında görülür. Mağaza bir b2b mağazasıdır, kullanıcı ürün sayfasını görmek veya ödeme yapabilmek için oturum açmalıdır, oturum geçersiz kılındığında / süresi dolduğunda kullanıcının oturum açma sayfalarına yönlendirildiği anlamına gelir. Şu anda ödeme sırasında bu sorunu düzeltmek benim için daha önemli.
Kullanıcı açısından ne olur: Kullanıcı sepeti doldurur, ödeme işlemine geçer ve son adıma geçer, ardından "siparişi gönder" düğmesine basar ve hiçbir şey olmaz. Perde arkasında Magento'nun JS'si AJAX isteği gerçekleştirir ve JS, JSON'u geri almayı bekler, ancak bu hata oluşursa, giriş sayfası HTML'si döndürülür ve JavaScript tarafından ayrıştırılamaz ve hiçbir şey yapmaz. Bu kullanıcılar için çok kafa karıştırıcı.
Eh, bu tam bir kullanıcı senaryosu değil, kullanıcılarla iletişime geçtik ve bize sepeti doldurmak ve sipariş vermek arasında birkaç gün beklediklerini, bunun tam olarak ne anlama geldiğini anlamak zor olduğunu söylediler, çünkü insanlar bunu hatırlamıyor.
PHP oturum ömrü - 350000 (~ 4 gün / saniye) Çerez ömrü - 345600 (4 gün)
İşte asıl soru: ne tür kullanıcı davranışlarının istisnaya yol açtığını nasıl bulabilirim?
GÜNCELLEME Şu ana kadar yapılan taleplere göre aşağıdaki derslerde istisna olduğunu biliyorum, bu benim için maalesef hiçbir şey ifade etmiyor.
/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
GÜNCELLEME 2 : oturumlar dosyalarda saklanır ve bu iyi bir seçim olsun ya da olmasın PHP oturumu çöp toplayıcısı tarafından temizlenir.