Estou cuidando de uma loja Magento com 400 a 500 visitantes e 40 a 50 pedidos por dia. Recentemente, o sistema foi atualizado do Magento EE 1.14.2.4 para o Magento EE 1.14.3.2 e notei algumas exceções estranhas nos logs:
exception 'Mage_Core_Model_Session_Exception' in
/var/www/.../app/code/core/Mage/Core/Model/Session/Abstract/Varien.php:418
Eu estava perseguindo essa exceção e sei que ela está sendo acionada porque o seguinte código de validação da sessão falha ao validar a sessão:
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() ) {
Este bloco if foi adicionado ao arquivo com a versão mais recente do Magento. E esta é uma mudança de frenagem, aparentemente, veja mais detalhes abaixo.
A exceção está acontecendo com bastante frequência, como uma dúzia de vezes por dia. mas não consigo recriar condições que levam à exceção, a menos que eu literalmente aplique a condição acima. As exceções costumam ocorrer nas páginas de detalhes do produto e na última etapa do checkout de uma página. A loja é uma loja b2b, o usuário deve estar logado para ver a página do produto ou para fazer o checkout, significa que o usuário é redirecionado para as páginas de login quando a sessão é invalidada / expirada. No momento, é mais importante para mim corrigir esse problema durante o checkout.
O que acontece da perspectiva do usuário: O usuário preenche o carrinho, faz o checkout e alcança o último passo, depois pressiona o botão "enviar o pedido" e nada acontece. Nos bastidores, o JS do Magento realiza uma solicitação AJAX e o JS espera receber o JSON de volta, mas se esse erro ocorrer, o HTML da página de login será retornado, o que não pode ser analisado pelo JavaScript e simplesmente não faz nada. Isso é super confuso para os usuários.
Bem, esse não é o cenário completo do usuário, contatamos os usuários e eles nos disseram que esperavam alguns dias entre encher o carrinho e enviar o pedido, o que isso significa exatamente é difícil de entender, porque as pessoas simplesmente não se lembram disso.
Duração da sessão do PHP - 350000 (~ 4 dias em segundos) Tempo de vida do cookie - 345600 (4 dias)
Aqui está a pergunta real: como descobrir que tipo de comportamento do usuário leva à exceção?
ATUALIZAÇÃO Até agora eu sei que a exceção acontece nas aulas seguintes, de acordo com a solicitação feita, para mim isso infelizmente não significa nada.
/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
ATUALIZAÇÃO 2 : as sessões são armazenadas em arquivos e limpas pelo coletor de lixo da sessão do PHP, se essa é uma boa opção ou não, está fora do escopo desta pergunta.