Giỏ hàng thả tất cả các mặt hàng / phiên giỏ hàng xóa


27

Một trang web tôi quản lý đột ngột (có khả năng 2 tuần trước - từ số liệu thống kê GA và chỉ được báo cáo ngay bây giờ) bắt đầu bỏ các mục trong giỏ hàng khi bạn xem giỏ hàng hoặc đi kiểm tra.

Top giỏ hàng nhỏ 'hiển thị các mục trong danh sách thả xuống, cho đến khi bạn duyệt đến giỏ hàng / thanh toán, rồi bạn kết thúc trên giỏ hàng, với thông báo' Không có mục nào trong giỏ hàng của bạn '.

Có vẻ như một vấn đề phiên. Nó không xảy ra khi đăng nhập.

Đã xóa tất cả các tùy chọn xác thực phiên trong 'system-> web-> cài đặt xác thực phiên' và bật tùy chọn 'Sử dụng SID trên Frontend'. Điều này đã giải quyết được vấn đề, nhưng vì các cài đặt này không thay đổi trong 3 tháng qua, tôi biết có một số vấn đề tiềm ẩn.

Điều này sau đó chỉ ra vấn đề sore-id? Bằng cách nào đó, trang web đang mất id cửa hàng, và bỏ dữ liệu phiên / giỏ hàng? Có thể một số người quan sát / sự kiện / viết lại bởi một số mô-đun.

Tôi không thể sao chép sự cố trên dev cục bộ hoặc trên máy chủ UAT. DB trên UAT là 2 tuần kể từ khi trực tiếp, vì vậy điều này có thể chỉ ra vấn đề / cài đặt db?

Những điều tôi đang cố gắng: Tôi đang bận kéo db trực tiếp hiện tại lên UAT để cập nhật thông tin đó, để xem liệu tôi có thể sao chép vấn đề ở đó không. sẽ cập nhật khi điều đó được thực hiện.

Khi tôi có thể sao chép sự cố trong một khu vực không có sự sống, tôi sẽ vô hiệu hóa một cách có hệ thống các mô-đun, xem có gì đó đang lẩm bẩm với id của cửa hàng không (bắt đầu với MageMonkey và sweettooth, vì chúng đã được cập nhật 2 tuần trước)

Câu hỏi là - tôi có thể thử cái gì khác? Bất kỳ con trỏ nào đến nơi tôi có thể đánh vào một số điểm dừng và bước mã để xem liệu tôi có thể theo dõi vấn đề này không?

không có hệ thống bộ đệm bổ sung như véc ni hoặc memcache được cài đặt. Máy chủ là một cài đặt cpanel tiêu chuẩn. kiểm tra trên uat tôi đã vô hiệu hóa tất cả bộ nhớ cache.

cập nhật thêm: có vẻ như khi tôi thả vào chủ đề mặc định tôi không thể sao chép. Tôi đang di chuyển một cách có hệ thống các chủ đề ghi đè các thư mục trở lại.

Tôi cũng đã sử dụng git để quay lại mã và vấn đề vẫn còn với mỗi hàm băm.

Cập nhật: Đã được một thời gian kể từ khi tôi có thời gian dành cho việc này. Tải trọng công việc cao.

Tôi đã chuyển các phiên sang tập tin dựa trên và vấn đề đã biến mất. Vì máy khách không có ý định sử dụng nhiều máy chủ trong tương lai gần và do tải công việc của tôi, nên điều này đã bị bỏ lại. Nhiều khả năng sẽ quay lại cắn tôi sau.

Hỗ trợ magento đề xuất vấn đề này liên quan đến mô-đun răng ngọt mở rộng các lớp phiên, nhưng tôi đã vô hiệu hóa mô-đun đó và vấn đề vẫn còn.

sẽ cập nhật khi tôi nhận được nhiều kết quả hơn.


'Sử dụng SID trên Frontend' trên thực tế không khắc phục được sự cố. Có vẻ như vấn đề là ngẫu nhiên. Hoạt động tốt cho một số sesssions, giọt cho những người khác.
ProxiBlue

Bây giờ tôi có thể sao chép nó một cách đáng tin cậy trên UAT. Có vẻ như 8/10 lần thử thêm vào giỏ hàng có vấn đề này. Sau đó, phiên 'gậy' và mọi thứ hoạt động như bình thường. Loại bỏ SweetTooth và MageMonkey là lý do (sau khi chúng được nâng cấp) Xác nhận đó là một vấn đề phiên. Khi tôi thêm vào giỏ hàng, tôi có phiên với một ID, khi tôi đi xem giỏ hàng, tôi nhận được id phiên mới.
ProxiBlue

Một số đồng nghiệp gặp phải một vấn đề gần như giống hệt nhau. Tôi không biết chính xác nguyên nhân gây ra sự cố (tôi biết nó có liên quan đến memcache và / hoặc véc ni), nhưng giải pháp là thiết lập bộ cân bằng tải cho (các) máy chủ. Vì vậy, bạn nên nói chuyện với quản trị viên máy chủ của bạn về điều này.
Vlad Preda

1
Phiên bản magento là gì? Ngoài ra những gì bạn đang sử dụng như lưu trữ phiên? Việc chuyển sang tập tin hoặc cơ sở dữ liệu tương ứng có làm nên sự khác biệt không?
Kristof tại Fooman

@Fooman Xin chào, EE 1.11.2.0, sử dụng phiên DB, chưa thử trao đổi với các tệp, sẽ báo cáo lại kết quả mang lại.
ProxiBlue

Câu trả lời:


8

Trên các hộp cPanel của chúng tôi, các tài sản bị thiếu đang phục vụ toàn bộ trang Magento.

Mặc định của cPanel ErrorDocument 404 /404.shtmlnhưng /404.shtmlkhông tồn tại trong tài liệu gốc của Magento, do đó .htaccess được thực thi lại và chuyển hướng /404.shtmlđến index.php(sử dụng mod_rewrite).

.Htaccess mặc định của Magento sẽ chỉ định rõ ràng 404, 500 và các trình xử lý lỗi khác.

Để khắc phục lỗi này, chúng tôi đã thêm phần sau vào .htaccess của chúng tôi:

ErrorDocument 404 /errors/404.php

Có lẽ chúng ta cũng nên thêm 500 giây nữa:

ErrorDocument 500 /errors/500.php


@ProxiBlue đã làm điều này giải quyết vấn đề của bạn vì đó là câu trả lời được chấp nhận? Tôi có vấn đề gần như giống hệt nhau. Vẫn không chắc chắn những gì gây ra nó.
dchayka

9

Bạn đang sử dụng Varnish trên máy chủ?

Chúng tôi đã thấy một số triển khai trong đó mọi người tước cookie TRƯỚC KHI tìm nạp nội dung tĩnh (hình ảnh / css / js) - vì vậy nếu hình ảnh / js / css không tồn tại; nó tải bootstrap Magento và 404 - điều này tước hoàn toàn phiên cookie và trang web.


Không có véc ni, ước gì nó đơn giản: '(
ProxiBlue

Hi có cùng một vấn đề tôi có thể biết giải pháp là gì?
Kandarp B Patel 5/2/2015

@Ben Xin vui lòng bạn có thể giải thích về điều này.
đốt cháy

6

Một vấn đề có thể là Magento không lưu dữ liệu phiên khi chuyển từ HTTP sang HTTPS . Đảm bảo rằng các cài đặt cần thiết cho SSL, vv được thiết lập đúng.

Một vấn đề khác có thể là ISP của khách hàng đang thay đổi địa chỉ IP của họ, như được ghi lại ở đây .

Để khắc phục sự cố này:

Thay đổi cài đặt Xác thực phiên trong Quản trị viên Magento, được tìm thấy trong Hệ thống> Cấu hình> Web , thành 'không' trên mọi thứ trừ Ngoại lệ Xác thực HTTP_USER_AGENT . Sau khi thực hiện việc này, hãy vào Hệ thống> Quản lý bộ đệm và làm mới bộ đệm cấu hình để áp dụng các thay đổi.


Giỏ hàng vẫn ở dạng http, do đó không phải là vấn đề http-> https.
ProxiBlue

1
Nó đang xảy ra với chúng tôi, trong môi trường UAT của chúng tôi, và chúng tôi có một ip cố định. Đánh giá cao những gợi ý.
ProxiBlue

5

Chúng tôi đã quan sát vấn đề này khi có một hình ảnh bị thiếu trên một trang, đặc biệt là nếu hình ảnh bị thiếu trong tất cả các trang, ví dụ như trong một tiêu đề hoặc chân trang. Có vẻ như trang 404 mà Magento hoặc máy chủ web trả về đã phá vỡ cookie phiên giao diện, dẫn đến mất phiên. Nó nằm trong danh sách những thứ cần khắc phục của chúng tôi, nhưng cách giải quyết là đảm bảo không có hình ảnh bị thiếu ...


Tôi rất vui vì điều đó không xảy ra với một số khách hàng của chúng tôi. Nhiều 404 hơn tôi quan tâm thừa nhận.
philwinkle

2
@jonathanday Magento sẽ không làm điều này, nhưng Varnish sẽ bị cấu hình xấu.
Ben Lessani - Sonassi

@sonassi, bạn có thể mở rộng trên Varnish được cấu hình xấu không? Chúng tôi đã có cùng một vấn đề. Sửa trang 404 đã khắc phục sự cố nhưng rất muốn biết liệu chúng tôi có thể định cấu hình Varnish tốt hơn không!
jmlnik

Đây thực tế là những gì đã xảy ra. Tôi bằng cách nào đó đã bỏ lỡ câu trả lời này! Thực tế là magento không nên đẩy phiên bản điều khiển của trang 404, mà là trang 404 tĩnh.
ProxiBlue

1
Tôi đã đăng một câu trả lời giải thích nó.
Ben Lessani - Sonassi

1

Đây có thể là một vấn đề ngày cookie / máy chủ. Điều đầu tiên cần kiểm tra là các tiêu đề cookie. Kiểm tra các tiêu đề (sử dụng một cái gì đó như Fireorms, Charles hoặc Fiddler).

Bạn sẽ thấy một cái gì đó như sau:

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

Nếu giá trị cho trường hết hạn là trong quá khứ, thì rất có thể thời gian trên máy chủ của bạn bị sai. Điều này có thể xảy ra khi các dịch vụ như ntpd không khởi động. Nếu đó là trường hợp, kiểm tra thời gian trên máy chủ. Nếu thời gian tắt, hãy kiểm tra trạng thái của ntpd (hoặc bất kỳ dịch vụ daemon nào để giữ cho thời gian của máy chủ được cập nhật).


Đã kiểm tra, ngày / giờ của máy chủ nếu ổn, ngày / giờ cookie vẫn ổn :(
ProxiBlue

1

Bộ sưu tập rác PHP đang dọn dẹp các phiên sớm. Tôi đã nhìn thấy điều này bản thân mình trên các trang web lưu lượng truy cập cao .

Một số mẹo khắc phục sự cố:

  • Phiên cũ nhất của bạn bao nhiêu tuổi? Để tìm hiểu: ls -laht [mageroot]/var/session/ | tail- nếu bạn không có các phiên dài hơn một vài tuần hoặc lâu hơn, bộ sưu tập rác có thể bị đổ lỗi
  • Tạm thời chuyển phiên sang kho dữ liệu khác - ví dụ: MySQL hoặc Memcached. Là vấn đề được giải quyết?
  • Điều này có xảy ra trên một máy chủ phát triển không? Nếu không, và tất cả mọi thứ đều bằng nhau, có thể là mức lưu lượng truy cập đang kích hoạt hết hạn phiên sớm hoặc thu gom rác

Tôi đã sửa lỗi này theo một trong hai cách:

  1. Trong .htaccess của bạn, thêm php_value session.gc_maxlifetime 2592000
  2. Trong php.ini của bạn, đặt session.gc_maxlifetime

Đọc thêm: http://www.php.net/manual/en/session.configuration.php#ini.session.gc-maxlifetime


1
Gợi ý tốt. Sẽ thử trong vài ngày
ProxiBlue

1

Chúng tôi đã có một vấn đề tương tự. Trong trường hợp của chúng tôi, đó là cấu hình Varnish (Giống như Ben Lessani - đã gợi ý). Chúng tôi đã định cấu hình Varnish của chúng tôi để lưu trữ bộ đệm 404 trong 120 giây để máy chủ của chúng tôi không bị ảnh hưởng xấu khi có lỗi 404 trên một trang.

Vì vậy, vấn đề là đối với 404s Magento đã phản hồi với Set-Cookie trong tiêu đề cho cookie frontend và frontend_cid, đặt lại phiên khách hàng.

Giải pháp của chúng tôi cho vấn đề này là loại bỏ mọi Set-Cookies cho các phản hồi 404,

unset beresp.http.set-cookie;

0

Những điều ngu ngốc đã phá vỡ các phiên PHP cho tôi trong quá khứ và có thể đáng để kiểm tra:

  • một đĩa đầy đủ
  • thời gian máy chủ không chính xác

:) kiểm tra đĩa đầu tiên, tất cả ok.
ProxiBlue

ngày tốt :( không phải là đơn giản, ugh [~ / public_html / var / log] # ngày Thu 31 tháng 1 11:55:49 WST 2013
ProxiBlue
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.