Xóa tập tin phiên Magento


8

Thư mục var / session liên tục lưu trữ dữ liệu rất lớn gây ra sự cố sử dụng dữ liệu lớn trên máy chủ,

mỗi khi tôi xóa các tập tin từ thư mục phiên sử dụng innode giảm xuống mức tối thiểu.

vì vậy tôi muốn hỏi làm thế nào tôi có thể tự động xóa các tệp phiên đó mỗi 24 giờ chẳng hạn.

Tôi mới bắt đầu làm việc với MAgento vì vậy tôi là một người mới một chút cho đến nay lời giải thích lớn sẽ được đánh giá cao.

tôi biết tôi nên tạo một công việc định kỳ bằng cách nào đó thông qua cpanel hoặc smt như thế.

Câu trả lời:


2

Nếu bạn sử dụng một công việc định kỳ để xóa tất cả các phiên, bạn sẽ xóa tất cả các giỏ hàng của khách hàng và mọi người sẽ rời khỏi trang web của bạn tức giận.

Tôi đề nghị bạn xem xét các tệp phiên của bạn và xem nếu chúng trông đáng ngờ.

Hãy thử kiểm tra địa chỉ IP của khách truy cập của bạn từ đây: https://www.iplocation.net/

Ví dụ, nếu bạn tìm thấy một loạt các IP Trung Quốc và trang web của bạn không phải là tiếng Trung Quốc, thì đây có thể là các bot đang lãng phí băng thông của bạn. Bạn nên chặn phạm vi IP của chúng trong cài đặt Apache hoặc trong .htaccess.

(Tôi tin rằng bạn thậm chí có thể thực hiện lọc theo quốc gia trong Apache nhưng tôi nghĩ rằng nó làm chậm thời gian phản hồi. Tôi đã không thử điều đó.)

Magento 1.x (không chắc chắn về 2.x) dường như cũng có một lỗi trong đó nó tạo ra một phiên mới cho mọi yêu cầu khi khách hàng không chấp nhận cookie. Vì vậy, các bot như Googlebot, Bingbot, SemrushBot và các công cụ khác, tất cả đều tạo ra số lượng lớn tệp phiên.

Đối với máy chủ của tôi, điều duy nhất tôi cần làm là loại bỏ các tệp bot phiên đó. Cho đến khi tôi có thời gian để tìm và sửa lỗi Magento, tôi có một tập lệnh shell chạy bằng cron để xóa tất cả các tệp phiên có chứa các chuỗi này:

  • Googlebot
  • bingbot
  • nhện
  • bán kết
  • Ahrefs
  • Thời gian hoạt động
  • spbot

Bạn đã tìm thấy một giải pháp để sửa lỗi? Tôi vừa xóa hơn 1,2 tập tin Mio, điều này thật vô lý.
Marco

Kịch bản bash tôi đã viết để dọn dẹp các tệp hoạt động tốt lúc đầu, nhưng các mẫu liên tục thay đổi nên nó rất nhiều công việc bảo trì. Vì vậy, tôi đang lên kế hoạch đào sâu vào mã và tìm giải pháp thực sự. Mã phải được kiểm tra nếu khách hàng chấp nhận cookie (vì bot không chấp nhận chúng) và KHÔNG tạo phiên cho những khách hàng đó.
Butussy Butkus

Bạn có muốn chia sẻ mã, nếu bạn đã hoàn thành? Hiện tại chúng tôi chỉ gặp sự cố với M2E Pro, Google và Bing. 3 điều đó tạo ra đống tập tin phiên.
Marco

1

Thay vì sử dụng các tập lệnh tùy chỉnh, sẽ có ý nghĩa hơn khi chỉ cần làm cho PHP xóa chúng cho bạn bằng cách chỉ định các giá trị đúng trong php.initệp của bạn . Nếu bạn đảm bảo rằng session.gc_maxlifetimecó một giá trị tương đối nhỏ (nhưng> = thời gian chờ cookie phiên của bạn) eg1440 và session.gc_probabilityđược đặt thành 1, thì trình thu gom rác phiên PHP tích hợp sẽ xóa các tệp cho bạn.


Làm cách nào để thay đổi chúng nếu tôi không thể tìm thấy tệp php.ini trong thư mục ftp Magento. tôi đã thử tạo tệp test.php và đặt các giá trị đó bằng ini_set, nhưng các chuỗi làm thay đổi giá trị của chúng. xin vui lòng giúp đỡ
Andrius

Nó không hoạt động, bạn có giải pháp nào khác không? Xin hãy giúp đỡ
Jenith Samuel

Chỉ cần tạo một tệp đặt tên phpinfo.php trong thư mục Magento ftp và đặt "phpinfo ();". Sau đó thử tải cái đó trên trình duyệt, bạn sẽ biết chính xác php.ini nằm ở đâu trên máy chủ của bạn. Sau đó, có lẽ bạn có thể thực hiện những thay đổi dễ dàng.
Asheem Patro

Trong trường hợp của tôi, bot có thể tạo ra hàng ngàn Phiên mới mỗi giờ. Nhưng chúng tôi muốn các phiên khách hàng thực sự kéo dài hàng tuần hoặc hơn. Vì vậy, dọn dẹp phiên bằng PHP không phải là câu trả lời. Magento cần kiểm tra xem máy khách có chấp nhận cookie (và / hoặc kiểm tra xem máy khách có phải là bot không) trước khi tạo phiên, thay vì tạo phiên mới cho mỗi lần tải trang không gửi cookie.
Butussy Butkus

1

Magento lưu dữ liệu phiên của khách hàng trong thư mục var / session nếu bạn xóa thư mục này, nó sẽ xóa tất cả dữ liệu phiên của khách hàng

Giả sử một trong những khách hàng khách của bạn thêm 3 sản phẩm vào giỏ hàng nếu bạn xóa dữ liệu phiên, nó sẽ xóa cả 3 sản phẩm khỏi giỏ hàng và đó là trải nghiệm tồi tệ cho khách hàng thay vì xóa dữ liệu phiên bạn có thể lưu phiên vào cơ sở dữ liệu

Để sử dụng cơ sở dữ liệu để lưu trữ phiên, chỉ cần có cái này trong ứng dụng / etc / local.xml của bạn :

<session_save><![CDATA[db]]></session_save>

hoặc bạn có thể sử dụng redis session / Memcached session cache để lưu dữ liệu trong redis cache / Memcached session

Để sử dụng cửa hàng phiên memcached trong Magento, bạn cần phải có cái này trong ứng dụng / etc / local.xml của bạn :

<session_save><![CDATA[memcache]]></session_save>
<session_save_path><![CDATA[tcp://localhost:11211?persistent=1&weight=2&timeout=10&retry_interval=10]]></session_save_path>

Để biết thêm thông tin về lưu trữ phiên truy cập liên kết này


0

Một giải pháp là bạn có thể tạo công việc định kỳ đang chạy một lần mỗi ngày để xóa các tệp bạn muốn.

Tại đây bạn có thể xem cách thiết lập công việc định kỳ: https://askubfox.com/questions/2368/how-do-i-set-up-a-cron-job

một hướng dẫn về cpanel cho cronjob: http://support.hostgator.com/articles/cpanel/how-do-i-create-and-delete-a-cron-job

Bạn có thể tạo tập lệnh bash hoặc php sẽ thực hiện thao tác xóa các tập tin. Và đặt tập lệnh này vào cron, để được thực hiện 3 hoặc 4 giờ sáng máy chủ, khi máy chủ ít được sử dụng. Để kiểm tra tập lệnh có hoạt động không, bạn có thể chạy thủ công.


0

Tạo một tập tin sh trong tài liệu gốc. Đặt mã bên dưới nó.

 #!/bin/bash
 # Shell script for cleaning session
 path=your document_root path goes here
 cd $path
 rm -rf var/session/*

thay đổi đường dẫn với đường dẫn document_root của bạn mà không có bất kỳ dấu ngoặc kép nào. Chạy mã này khi có ít lượt truy cập trang web.

LÀM XONG!!


cái này hoạt động với tôi rm -rf var / session / *
Alam Zaib

Điều này cũng giết chết tất cả các phiên hoạt động
Kevin Krieger
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.