Estoy cuidando una tienda de Magento con 400-500 visitantes y 40-50 pedidos por día. Recientemente, el sistema se actualizó de Magento EE 1.14.2.4 a Magento EE 1.14.3.2 y noté algunas excepciones extrañas en los registros:
exception 'Mage_Core_Model_Session_Exception' in
/var/www/.../app/code/core/Mage/Core/Model/Session/Abstract/Varien.php:418
Estaba persiguiendo esa excepción y sé que se está disparando porque el siguiente código de validación de sesión no valida la sesión:
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 if-block se agregó al archivo con la última versión de Magento. Y aparentemente este es un cambio de frenado, vea más detalles a continuación.
La excepción ocurre con bastante frecuencia, como una docena de veces al día. pero no puedo recrear condiciones que conducen a la excepción, a menos que literalmente ponga verdadero en la condición anterior. Las excepciones ocurren con mayor frecuencia en las páginas de detalles del producto y en el último paso del pago de una página. La tienda es una tienda b2b, el usuario debe iniciar sesión para ver la página del producto o para poder pagar, significa que el usuario es redirigido a las páginas de inicio de sesión cuando la sesión se invalida / expira. Por el momento, es más importante para mí solucionar este problema durante el pago.
Lo que sucede desde la perspectiva del usuario: el usuario llena el carrito, procede al pago y llega al último paso, luego presiona el botón "enviar el pedido" y no sucede nada. Detrás de escena, JS de Magento realiza una solicitud AJAX y JS espera recibir JSON nuevamente, pero si ocurre este error, se devuelve el HTML de la página de inicio de sesión, que JavaScript no puede analizar y simplemente no hace nada. Eso es súper confuso para los usuarios.
Bueno, ese no es el escenario completo del usuario, contactamos a los usuarios y nos dijeron que esperaron unos días entre llenar el carrito y enviar el pedido, lo que eso significa exactamente es difícil de entender, porque la gente simplemente no lo recuerda.
Duración de la sesión PHP: 350000 (~ 4 días en segundos) Duración de la cookie: 345600 (4 días)
Aquí está la pregunta real: ¿cómo puedo averiguar qué tipo de comportamiento del usuario conduce a la excepción?
ACTUALIZACIÓN Hasta ahora sé que la excepción ocurre en las siguientes clases de acuerdo con la solicitud realizada, para mí eso no significa nada desafortunadamente.
/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
ACTUALIZACIÓN 2 : las sesiones se almacenan en archivos y el recolector de basura de la sesión de PHP las limpia, ya sea que esta sea una buena opción o no, está fuera del alcance de esta pregunta.