Saya menjaga toko Magento dengan 400-500 pengunjung dan 40-50 pesanan per hari. Baru-baru ini sistem ditingkatkan dari Magento EE 1.14.2.4 ke Magento EE 1.14.3.2 dan saya melihat beberapa pengecualian aneh dalam log:
exception 'Mage_Core_Model_Session_Exception' in
/var/www/.../app/code/core/Mage/Core/Model/Session/Abstract/Varien.php:418
Saya mengejar pengecualian itu dan saya tahu bahwa itu sedang dipecat karena kode validasi sesi berikut gagal memvalidasi sesi:
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() ) {
Blok if ini ditambahkan ke file dengan rilis terbaru dari Magento. Dan ini sepertinya perubahan pengereman, lihat detail lebih lanjut di bawah ini.
Pengecualian terjadi cukup sering, seperti belasan kali per hari. tapi saya tidak dapat membuat ulang kondisi yang mengarah ke pengecualian, kecuali saya benar-benar mengemukakan kondisi di atas. Pengecualian paling sering terjadi pada halaman detail produk dan pada langkah terakhir dari satu checkout halaman. Toko adalah toko b2b, pengguna harus masuk untuk melihat halaman produk atau dapat checkout, berarti pengguna diarahkan ke halaman login saat sesi tidak valid / kedaluwarsa. Saat ini lebih penting bagi saya untuk memperbaiki masalah ini saat checkout.
Apa yang terjadi dari perspektif pengguna: Pengguna mengisi troli, melanjutkan ke checkout, dan mencapai langkah terakhir, kemudian ia menekan tombol "kirim pesanan" dan tidak ada yang terjadi. Di belakang layar JS Magento melakukan permintaan AJAX dan JS mengharapkan untuk menerima JSON kembali, tetapi jika kesalahan ini terjadi, halaman login HTML dikembalikan, yang tidak dapat diuraikan oleh JavaScript dan hanya tidak melakukan apa-apa. Itu sangat membingungkan bagi pengguna.
Ya, itu bukan skenario pengguna yang lengkap, kami menghubungi pengguna dan mereka memberi tahu kami bahwa mereka menunggu beberapa hari antara mengisi keranjang dan mengirimkan pesanan, apa artinya itu sebenarnya sulit diketahui, karena orang tidak ingat itu.
Seumur hidup sesi PHP - 350000 (~ 4 hari dalam hitungan detik) Seumur hidup cookie - 345600 (4 hari)
Inilah pertanyaan aktual: bagaimana saya bisa mengetahui perilaku pengguna seperti apa yang menyebabkan pengecualian?
PEMBARUAN Sejauh ini saya tahu bahwa pengecualian terjadi dalam mengikuti kelas sesuai dengan permintaan yang dibuat, bagi saya itu tidak berarti apa-apa.
/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
PEMBARUAN 2 : sesi disimpan dalam file dan dibersihkan oleh pemungut sampah sesi PHP, apakah ini pilihan yang baik atau tidak berada di luar cakupan pertanyaan ini.