Un sitio que administro repentinamente (posiblemente hace 2 semanas, según las estadísticas de GA, y que solo informaba ahora) comenzó a soltar los artículos del carrito cuando lo ve o sale de la caja.
El 'mini-carrito' superior muestra los artículos en el menú desplegable, hasta que navegue hasta el carrito / finalice la compra, y luego termine en el carrito, con el mensaje 'No hay artículos en su carrito'.
Parece un problema de sesión. No sucede cuando inicia sesión.
Se eliminaron todas las opciones de validación de sesión en 'sistema-> web-> configuración de validación de sesión' y se habilitó la que dice 'Usar SID en Frontend'. Esto resolvió el problema, pero como esta configuración no cambió en los últimos 3 meses, sé que hay un problema subyacente.
¿Entonces esto apunta al problema con el problema de identificación de dolor? De alguna manera, el sitio está perdiendo en qué ID de tienda se encuentra y eliminando los datos de sesión / carrito. Tal vez algún observador / evento / reescritura por algún módulo.
No puedo replicar el problema en el desarrollador local o en el servidor UAT. DB en UAT tiene 2 semanas de antigüedad, por lo que esto podría apuntar a un problema / configuración de db.
Cosas que estoy intentando: estoy ocupado sacando db actual en vivo a UAT para actualizarlo, para ver si puedo replicar el problema allí. se actualizará cuando eso esté hecho.
Una vez que pueda replicar el problema en un área no activa, sistemáticamente deshabilitaré los módulos, veré si hay algún problema con los ID de la tienda (comenzando con MageMonkey y sweettooth, ya que se actualizaron hace 2 semanas)
La pregunta es: ¿qué más puedo probar? ¿Algún indicador de dónde puedo golpear algunos puntos de interrupción y pasar el código para ver si puedo rastrear este problema?
no hay sistemas de caché adicionales como barniz o memcache instalados. El servidor es una instalación estándar de cpanel. probando en uat deshabilité todo el caché.
actualización adicional: parecería que cuando uso el tema predeterminado no puedo reproducirlo. Estoy moviendo sistemáticamente las carpetas de anulación de temas.
También usé git para retroceder el código y el problema persiste con cada hash.
Actualización: ha pasado un tiempo desde que tuve tiempo para gastar en esto. Alta carga de trabajo.
Moví las sesiones a archivos y el problema desapareció. Dado que el cliente no tiene la intención de usar varios servidores en el futuro cercano, y debido a mi carga de trabajo, esto se dejó así. Lo más probable es que vuelva a morderme más tarde.
El soporte de magento sugirió que el problema está relacionado con el módulo goloso que extiende las clases de sesión, pero he desactivado ese módulo y el problema persiste.
se actualizará cuando obtenga más resultados.
Respuestas:
En nuestros cuadros de cPanel, los activos faltantes servían a toda la página de Magento.
El valor predeterminado de cPanel es,
ErrorDocument 404 /404.shtml
pero/404.shtml
no existe, en la raíz del documento de Magento, por lo que .htaccess se ejecuta nuevamente y se redirige/404.shtml
aindex.php
(usando mod_rewrite).El .htaccess predeterminado de Magento debe especificar 404, 500 y otros controladores de errores explícitamente.
Para solucionar este problema, agregamos lo siguiente a nuestro .htaccess:
ErrorDocument 404 /errors/404.php
Probablemente también deberíamos agregar 500s también:
ErrorDocument 500 /errors/500.php
fuente
¿Estás usando Varnish en el servidor?
Hemos visto varias implementaciones en las que las personas eliminan la cookie ANTES de buscar contenido estático (images / css / js), por lo que si la imagen / js / css no existe; carga el bootstrap de Magento y los 404, lo que elimina por completo la cookie y la sesión del sitio.
fuente
Un problema podría ser que Magento no está guardando los datos de la sesión al cambiar de HTTP a HTTPS . Asegúrese de que la configuración necesaria para SSL, etc. esté configurada correctamente.
Otro problema podría ser que el ISP del cliente está cambiando su dirección IP, como se documenta aquí .
Para solucionar este problema:
Cambie la configuración de Validación de sesión en el Administrador de Magento, que se encuentra en Sistema> Configuraciones> Web , a 'no' en todo excepto " Validar HTTP_USER_AGENT ". Después de hacer esto, vaya a Sistema> Administración de caché y actualice la caché de configuración para aplicar los cambios.
fuente
Hemos observado este problema cuando falta una imagen en una página, especialmente si la imagen falta en todas las páginas, por ejemplo, en un encabezado o pie de página. Parece que la página 404 que devuelve Magento o el servidor web rompe la cookie de sesión de la interfaz, lo que lleva a la pérdida de sesión. Está en nuestra lista de cosas para arreglar, pero la solución es garantizar que no falten imágenes ...
fuente
Esto podría ser un problema de cookies / fecha del servidor. Lo primero que debe verificar son los encabezados de cookies. Inspecciona los encabezados (usando algo como Firebug, Charles o Fiddler).
Deberías ver algo como lo siguiente:
Si el valor del campo caduca está en el pasado, es probable que el tiempo en su servidor sea incorrecto. Esto puede suceder cuando los servicios como ntpd no se inician. Si ese es el caso, verifique la hora en el servidor. Si el tiempo está apagado, verifique el estado de ntpd (o el servicio de demonio para mantener actualizada la hora del servidor).
fuente
La recolección de basura PHP está limpiando las sesiones prematuramente. Lo he visto yo mismo en sitios de alto tráfico .
Algunos consejos para solucionar problemas:
ls -laht [mageroot]/var/session/ | tail
si no tiene sesiones de más de un par de semanas, es probable que la recolección de basura sea la culpableHe solucionado esto de una de dos maneras:
php_value session.gc_maxlifetime 2592000
Más lectura: http://www.php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime
fuente
Tuvimos un problema similar. En nuestro caso, fue la configuración de barniz (como Ben Lessani, sugirió). Hemos configurado nuestro Barniz para almacenar en caché los 404 para 120 para que nuestros servidores no se vean mal cuando hay un error 404 en una página.
Entonces, el problema es para 404s Magento respondía con un Set-Cookie en el encabezado de las cookies frontend y frontend_cid, que restablece la sesión del cliente.
Nuestra solución para esto es eliminar cualquier conjunto de cookies para respuestas 404,
fuente
Cosas tontas que me han roto las sesiones de PHP en el pasado y que vale la pena revisar:
fuente