장바구니에서 모든 품목 삭제 / 카트 세션 삭제


27

장바구니를 보거나 결제 할 때 갑자기 (잠재적으로 2 주 전-GA 통계에서 현재보고 된 사이트) 장바구니 항목을 삭제하기 시작했습니다.

상단의 '미니 카트'는 카트 / 체크 아웃을 탐색 한 다음 '카트에 아이템이 없습니다'라는 메시지가 표시 될 때까지 드롭 다운에 아이템을 표시합니다.

세션 문제인 것 같습니다. 로그인 할 때 발생하지 않습니다.

'시스템-> 웹-> 세션 검증 설정'에서 모든 세션 검증 옵션을 제거하고 '프론트 엔드에서 SID 사용'이라는 옵션을 활성화했습니다. 이렇게하면 문제가 해결되었지만 지난 3 개월 동안 이러한 설정이 변경되지 않았기 때문에 몇 가지 근본적인 문제가 있음을 알고 있습니다.

그러면 아픈 문제와 관련이 있습니까? 어떻게 든 사이트가 어떤 상점 ID를 잃어 버렸고 세션 / 카트 데이터를 삭제합니까? 어쩌면 일부 모듈에 의해 관찰자 / 이벤트 / 재 작성이있을 수 있습니다.

로컬 개발자 또는 UAT 서버에서 문제를 복제 할 수 없습니다. UAT의 DB는 생방송 날짜가 2 주이므로 DB 문제 / 설정을 가리킬 수 있습니까?

내가 시도하는 것 : 현재 라이브 데이터베이스를 UAT로 가져 와서 최신 정보를 얻으려면 거기에서 문제를 복제 할 수 있는지 확인하십시오. 완료되면 업데이트됩니다.

비 실시간 영역에서 문제를 복제 할 수있게되면 모듈을 체계적으로 비활성화하고, 저장소 ID로 인해 문제가 발생하는지 확인합니다 (2 주 전에 업데이트되었으므로 MageMonkey 및 sweettooth로 시작).

질문은-다른 무엇을 시도 할 수 있습니까? 이 문제를 추적 할 수 있는지 확인하기 위해 중단 점을 깰 수있는 코드에 대한 포인터가 있습니까?

니스 또는 memcache와 같은 추가 캐시 시스템이 설치되어 있지 않습니다. 서버는 표준 cpanel 설치입니다. uat에서 테스트하면 모든 캐시가 비활성화되었습니다.

추가 업데이트 : 기본 테마로 넘어 가면 재생할 수없는 것 같습니다. 테마 재정의 폴더를 체계적으로 옮기고 있습니다.

또한 git을 사용하여 코드를 역 추적하고 문제는 모든 해시와 함께 남아 있습니다.

업데이트 : 이것에 시간을 보낸 이후로 오랜 시간이 걸렸습니다. 높은 작업 부하.

세션을 파일 기반으로 옮겼는데 문제가 사라졌습니다. 클라이언트는 가까운 장래에 여러 서버를 사용하지 않을 것이며 내 작업 부하로 인해 그 결과는 그대로 남았습니다. 나중에 다시 물려고 다시 올 것입니다.

magento 지원은 문제가 세션 클래스를 확장하는 달콤한 치아 모듈과 관련이 있다고 제안했지만 해당 모듈을 비활성화했으며 문제가 남아 있습니다.

더 많은 결과를 얻으면 업데이트됩니다.


'프론트 엔드에서 SID 사용'은 실제로 문제를 해결하지 못했습니다. 문제가 무작위 인 것 같습니다. 일부 sesssions에 대해 잘 작동하고 다른 사람들에게는 떨어집니다.
ProxiBlue

나는 이것을 UAT에서 안정적으로 복제 할 수 있습니다. 장바구니에 추가하려는 8/10 시도에이 문제가있는 것 같습니다. 그런 다음 세션이 '고착'되고 모든 것이 정상적으로 작동합니다. SweetTooth 및 MageMonkey를 이유 (업그레이드 후)로 제거하여 세션 문제임을 확인했습니다. 장바구니에 추가하면 하나의 ID로 세션이 있고 장바구니를 볼 때 새 세션 ID를 얻습니다.
ProxiBlue

일부 동료는 거의 동일한 문제를 겪었습니다. 문제의 원인을 정확히 알지 못하지만 (memcache 및 / 또는 니스와 관련이 있음을 알고 있음) 해결책은 서버에로드 밸런서를 설정하는 것입니다. 이에 대해서는 서버 관리자에게 문의하십시오.
Vlad Preda

1
마 젠토 버전은 무엇입니까? 세션 스토리지로 무엇을 사용하고 있습니까? 파일이나 데이터베이스로 각각 전환하면 차이가 있습니까?
Fooman에서 크리스토프

@Fooman Hi, EE 1.11.2.0은 DB 세션을 사용하여 파일로의 스와핑을 시도하지 않았으며 결과를 제공합니다.
ProxiBlue

답변:


8

cPanel 상자에서 누락 된 자산이 전체 Magento 페이지를 제공하고있었습니다.

cPanel의 기본값 은 Magento의 문서 루트에 존재 ErrorDocument 404 /404.shtml하지만 /404.shtml존재하지 않으므로 .htaccess가 다시 실행 /404.shtml되고 index.php(mod_rewrite를 사용하여) 리디렉션 됩니다 .

Magento의 기본 .htaccess는 404, 500 및 기타 오류 처리기를 명시 적으로 지정해야합니다.

이 동작을 해결하기 위해 .htaccess에 다음을 추가했습니다.

ErrorDocument 404 /errors/404.php

또한 500을 추가해야 할 수도 있습니다.

ErrorDocument 500 /errors/500.php


@ProxiBlue 허용되는 답변이므로 문제가 해결 되었습니까? 나는 거의 동일한 문제가 있습니다. 여전히 원인이 무엇인지 확실하지 않습니다.
dchayka

9

서버에서 니스를 사용하고 있습니까?

정적 컨텐츠 (images / css / js)를 가져 오기 전에 사람들이 쿠키를 제거하는 많은 구현을 보았습니다. 따라서 image / js / css가 존재하지 않는 경우; 쿠키와 사이트 세션을 완전히 제거하는 Magento 부트 스트랩과 404를로드합니다.


광택이 없습니다. 그것이 그렇게 간단하기를 바랍니다. '(
ProxiBlue

안녕, 같은 문제가 있는데 해결책이 무엇인지 알 수 있습니까?
Kandarp B Patel

@Ben 좀 더 자세히 설명해주세요.
burntblark

6

한 가지 문제는 Magento가 HTTP 에서 HTTPS로 전환 할 때 세션 데이터를 저장하지 않는 것일 수 있습니다 . SSL 등에 필요한 설정이 올바르게 설정되어 있는지 확인하십시오.

또 다른 문제는 여기에 설명 된대로 고객의 ISP가 IP 주소를 변경하고있을 수 있습니다 .

이 문제를 해결하려면

" HTTP_USER_AGENT 유효성 검사 "를 제외한 모든 항목 에서 시스템> 구성> 웹 에있는 Magento Admin의 세션 유효성 검사 설정 을 '아니오'로 변경하십시오. 이 작업을 수행 한 후 시스템> 캐시 관리 로 이동 하여 구성 캐시를 새로 고쳐 변경 사항을 적용하십시오.


장바구니가 여전히 http에 있으므로 http-> https 문제가 아닙니다.
ProxiBlue

1
UAT 환경에서도 우리에게 일어나고 있으며 고정 IP가 있습니다. 제안을 감사하십시오.
ProxiBlue

5

페이지에 누락 된 이미지가있을 때, 특히 머리글 또는 바닥 글과 같은 모든 페이지에서 이미지가 누락 된 경우이 문제가 관찰되었습니다. Magento 또는 웹 서버가 반환하는 404 페이지가 프런트 엔드 세션 쿠키를 중단하여 세션이 손실 된 것으로 보입니다. 해결해야 할 목록에 있지만 해결 방법은 누락 된 이미지가 없는지 확인하는 것입니다.


일부 고객에게는 이런 일이 일어나지 않아서 다행입니다. 내가 인정하는 것보다 더 많은 404.
philwinkle

2
@jonathanday Magento는이 작업을 수행하지 않지만 잘못 구성된 Varnish를 수행합니다.
Ben Lessani-Sonassi

@sonassi, 잘못 구성된 Varnish pls를 확장 할 수 있습니까? 우리는 같은 문제를 겪고 있습니다. 404 페이지를 수정하면 문제가 해결되었지만 니스를 더 잘 구성 할 수 있는지 알고 싶습니다!
jmlnik

이것은 실제로 일어난 일이었습니다. 나는 어떻게 든이 대답을 놓쳤다! 사실 magento는 404 페이지의 컨트롤러 버전을 푸시하지 말고 정적 404 페이지를 푸시해야합니다.
ProxiBlue

1
설명하는 답변을 게시했습니다.
벤 레 사니-Sonassi

1

쿠키 / 서버 날짜 문제 일 수 있습니다. 가장 먼저 확인해야 할 것은 쿠키 헤더입니다. Firebug, Charles 또는 Fiddler와 같은 것을 사용하여 헤더를 검사하십시오.

다음과 같은 내용이 표시되어야합니다.

Set-Cookie  frontend=9dhtlgf1qmo6loqksvvmqjd625; expires=Thu, 31-Jan-2013 05:01:13 GMT; path=/; domain=.foo.com; HttpOnly

만료 필드 값이 과거 인 경우 서버의 시간이 잘못되었을 가능성이 있습니다. 이것은 ntpd와 같은 서비스가 시작되지 않을 때 발생할 수 있습니다. 이 경우 서버에서 시간을 확인하십시오. 시간이 꺼져 있으면 ntpd 상태 (또는 서버 시간을 업데이트 할 데몬 서비스)를 확인하십시오.


잘, 쿠키 날짜 / 시간이 벌금 :( 경우 서버 날짜 / 시간, 검사
ProxiBlue

1

PHP 가비지 콜렉션 이 세션을 조기에 지 웁니다. 트래픽이 많은 사이트 에서 직접 확인했습니다 .

몇 가지 문제 해결 팁 :

  • 가장 오래된 세션은 몇 살입니까? 알아두기 : ls -laht [mageroot]/var/session/ | tail-2 주 이상 세션이 없으면 가비지 콜렉션이 원인 일 수 있습니다.
  • 예를 들어 MySQL 또는 Memcached와 같은 다른 데이터 저장소로 세션을 일시적으로 이동하십시오. 문제가 해결 되었습니까?
  • 이것이 개발 서버에서 발생합니까? 모든 것이 동일하지 않으면 트래픽 수준이 조기 세션 만료 또는 가비지 수집을 트리거하는 것일 수 있습니다.

나는 이것을 두 가지 방법 중 하나로 고쳤다.

  1. .htaccess에서 php_value session.gc_maxlifetime 2592000
  2. php.ini에서 session.gc_maxlifetime을 설정하십시오

더 읽기 : http://www.php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime


1
좋은 제안입니다. 며칠 내로 시도
ProxiBlue

1

비슷한 문제가있었습니다. 우리의 경우에는 바니시 구성이었습니다 (Ben Lessani와 마찬가지로-제안했습니다). 페이지에 404 오류가있을 때 서버가 심하게 망치지 않도록 120에서 404를 캐시하도록 Varnish를 구성했습니다.

따라서 문제는 404s Magento가 frontend 및 frontend_cid 쿠키의 헤더에 Set-Cookie로 응답하여 고객 세션을 재설정하는 것입니다.

이 솔루션에 대한 해결책은 404 응답을 위해 Set-Cookie를 제거하는 것입니다.

unset beresp.http.set-cookie;

0

과거에 나를 위해 PHP 세션을 깨뜨 렸고 확인해야 할 멍청한 것들 :

  • 가득 찬 디스크
  • 부정확 한 서버 시간

:) 디스크 우선 확인, 모두 확인.
ProxiBlue

날짜 잘 :( 간단하지, 웃음 [~ / public_html / var / log] # 날짜 Thu 1 월 31 일 11:55:49 WST 2013
ProxiBlue
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.