400〜500人の訪問者と1日あたり40〜50件の注文があるMagentoショップを探しています。最近、システムがMagento EE 1.14.2.4からMagento EE 1.14.3.2にアップグレードされ、ログに奇妙な例外がいくつかあることに気付きました。
exception 'Mage_Core_Model_Session_Exception' in
/var/www/.../app/code/core/Mage/Core/Model/Session/Abstract/Varien.php:418
私はその例外を追いかけていましたが、次のセッション検証コードがセッションの検証に失敗したため、例外が発生していることを知っています。
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() ) {
このifブロックは、Magentoからの最新リリースでファイルに追加されました。これは明らかにブレーキの変更です。詳細は以下をご覧ください。
例外は非常に頻繁に発生し、1日に数十回です。しかし、上記の条件に文字通りtrueを設定しない限り、例外につながる条件を再作成することはできません。例外はほとんどの場合、製品詳細ページと1ページのチェックアウトの最後のステップで発生します。ショップはb2bショップです。製品ページを表示したり、チェックアウトしたりするには、ユーザーがログインする必要があります。つまり、セッションが無効化/期限切れになると、ユーザーはログインページにリダイレクトされます。現時点では、チェックアウト中にこの問題を修正することがより重要です。
ユーザーの観点から何が起こるか:ユーザーはカートを満杯にし、チェックアウトに進み、最後のステップに進み、「注文を送信」ボタンを押しても何も起こりません。舞台裏では、MagentoのJSはAJAXリクエストを実行し、JSはJSONを受信することを期待していますが、このエラーが発生するとログインページのHTMLが返され、JavaScriptで解析できず、何もしません。これはユーザーにとっては非常に紛らわしいです。
まあ、それは完全なユーザーシナリオではありません。ユーザーに連絡し、カートに入れて注文を送信するまでに数日待っていたと伝えました。人々は単にそれを覚えていないので、正確に何を意味するのかわかりません。
PHPセッションの有効期間-350000(秒で最大4日)Cookieの有効期間-345600(4日)
実際の質問は次のとおりです。 どのようなユーザーの行動が例外につながるのかをどのように見つけることができますか?
更新 これまでのところ、リクエストに応じて次のクラスで例外が発生することを知っていますが、残念ながら何も意味しません。
/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
更新2:セッションはファイルに保存され、PHPセッションガベージコレクターによってクリーンアップされます。これが適切な選択かどうかは、この質問の範囲外です。