나는 400-500 방문자와 40-40 주문을 매일 마 젠토 상점을 찾고 있습니다. 최근에 시스템이 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-block은 Magento의 최신 릴리스로 파일에 추가되었습니다. 그리고 이것은 명백한 제동 변화입니다. 자세한 내용은 아래를 참조하십시오.
예외는 하루에 수십 번처럼 자주 발생합니다. 그러나 문자 그대로 위의 조건에 맞지 않으면 예외로 이어지는 조건을 다시 만들 수 없습니다. 예외는 대부분 제품 세부 사항 페이지와 한 페이지 체크 아웃의 마지막 단계에서 발생합니다. 상점은 b2b 상점이며 사용자는 제품 페이지를 보거나 체크 아웃 할 수 있도록 로그인해야합니다. 즉, 세션이 무효화 / 만료되면 사용자가 로그인 페이지로 경로 재 지정됩니다. 현재 결제 중에이 문제를 해결하는 것이 더 중요합니다.
사용자 관점에서 발생하는 일 : 사용자가 장바구니를 채우고 체크 아웃을 진행하고 마지막 단계에 도달 한 후 "주문 제출"버튼을 누르면 아무 일도 일어나지 않습니다. 무대 뒤에서 Magento의 JS는 AJAX 요청을 수행하고 JS는 JSON을 다시 수신 할 것으로 예상하지만이 오류가 발생하면 로그인 페이지의 HTML이 반환되며 JavaScript로 구문 분석 할 수 없으며 아무 것도 수행하지 않습니다. 사용자에게는 매우 혼란 스럽습니다.
글쎄, 그것은 완전한 사용자 시나리오가 아니며, 우리는 사용자들에게 연락하여 장바구니를 채우고 주문을 제출할 때까지 며칠을 기다렸다 고 사람들이 단순히 기억하지 못하기 때문에 정확히 의미하는 것이 무엇인지 알았습니다.
PHP 세션 수명-350000 (최대 4 일) 쿠키 수명-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 세션 가비지 수집기에 의해 정리됩니다. 이것은 좋은 선택인지 여부에 관계 없이이 질문의 범위를 벗어납니다.