File sesi Magento dihapus

8

Folder var / sesi menyimpan jumlah data whitch yang terus-menerus sangat besar menyebabkan penggunaan innode besar di server,

setiap kali saya menghapus file dari folder sesi penggunaan inode turun ke minimum.

jadi saya ingin bertanya bagaimana saya bisa secara otomatis menghapus file sesi tersebut setiap 24 jam misalnya.

Saya baru saja mulai bekerja dengan MAgento jadi saya sedikit pemula sejauh ini sehingga penjelasan yang besar akan dihargai.

Saya tahu saya harus membuat pekerjaan cron entah bagaimana melalui cpanel atau smt seperti itu.

Andrius
sumber

Jawaban:

2

Jika Anda menggunakan pekerjaan cron untuk menghapus semua sesi, Anda akan menghapus semua keranjang belanja pelanggan dan orang-orang akan membuat situs Anda marah.

Saya sarankan Anda melihat file sesi Anda dan melihat apakah mereka terlihat mencurigakan.

Coba periksa di mana alamat IP pengunjung Anda berasal dari sini: https://www.iplocation.net/

Jika, misalnya, Anda menemukan banyak IP Cina dan situs web Anda bukan Cina, ini mungkin bot yang menghabiskan bandwidth Anda. Anda harus memblokir rentang IP mereka di pengaturan Apache Anda atau di .htaccess.

(Saya percaya Anda bahkan dapat melakukan penyaringan berbasis negara di Apache tapi saya pikir itu memperlambat waktu respons. Saya belum mencobanya.)

Magento 1.x (tidak yakin tentang 2.x) juga tampaknya memiliki bug di mana ia membuat sesi baru untuk setiap permintaan ketika klien tidak menerima cookie. Jadi bot seperti Googlebot, Bingbot, SemrushBot, dan lainnya, semua menghasilkan banyak file sesi.

Untuk server saya, satu-satunya hal yang perlu saya lakukan adalah menyingkirkan file sesi bot tersebut. Sampai saya punya waktu untuk menemukan dan memperbaiki bug Magento, saya memiliki skrip shell yang dijalankan oleh cron untuk menghapus semua file sesi yang berisi string ini:

  • Googlebot
  • bingbot
  • laba-laba
  • Semrush
  • AhrefsBot
  • UptimeRobot
  • spbot
Butkus Buttle
sumber
Apakah Anda menemukan solusi untuk memperbaiki bug? Saya baru saja menghapus lebih dari 1,2 file Mio, yang hanya konyol.
Marco
Skrip bash yang saya tulis untuk membersihkan file bekerja dengan baik pada awalnya, tetapi polanya terus berubah sehingga banyak pekerjaan pemeliharaan. Jadi saya berencana untuk menggali kode dan mencari solusi nyata. Kode harus memeriksa apakah klien menerima cookie (karena bot tidak menerimanya) dan TIDAK membuat sesi untuk klien tersebut.
Buttle Butkus
Maukah Anda berbagi kode, jika sudah selesai? Saat ini kami hanya memiliki masalah dengan M2E Pro, Google dan Bing. 3 hal itu menciptakan banyak file sesi.
Marco
1

Daripada menggunakan skrip khusus, akan lebih masuk akal untuk membuat PHP menjernihkannya untuk Anda dengan menentukan nilai yang tepat dalam php.inifile Anda . Jika Anda memastikan yang session.gc_maxlifetimememiliki nilai yang relatif kecil (tetapi> = batas waktu cookie sesi Anda) eg1440 dan session.gc_probabilitydiatur ke 1, maka pemulung sampah sesi PHP yang dibangun harus menghapus file untuk Anda.

Peter O'Callaghan
sumber
bagaimana cara mengubahnya jika saya tidak dapat menemukan file php.ini di direktori ftp Magento. saya mencoba membuat file test.php dan mengatur nilai tersebut dengan ini_set, tetapi string mengubah nilai mereka. tolong bantu
Andrius
Ini tidak berfungsi, apakah Anda punya solusi lain? Tolong bantu
Jenith Samuel
Cukup buat nama file phpinfo.php di dalam direktori ftp Magento dan tuliskan "phpinfo ();". Kemudian cobalah memuat yang satu itu di browser Anda akan mengetahui di mana tepatnya php.ini berada di server Anda. Maka mungkin Anda bisa melakukan perubahan ini dengan mudah.
Asheem Patro
Dalam kasus saya, bot dapat membuat ribuan Sesi baru per jam. Tetapi kami ingin sesi pelanggan nyata berlangsung selama beberapa minggu atau lebih. Jadi, sesi pembersihan oleh PHP bukanlah jawabannya. Magento perlu memeriksa apakah klien menerima cookie (dan / atau memeriksa apakah klien adalah bot) sebelum membuat sesi, alih-alih membuat sesi baru untuk setiap pemuatan halaman yang tidak mengirim cookie.
Buttle Butkus
1

Magento menyimpan data sesi pelanggan di folder var / sesi jika Anda menghapus folder ini, ia akan menghapus semua data sesi pelanggan

Mari kita asumsikan salah satu pelanggan tamu Anda menambahkan 3 produk ke troli jika Anda menghapus data sesi, itu akan menghapus semua 3 produk dari troli dan itu pengalaman buruk bagi pelanggan daripada menghapus data sesi Anda dapat menyimpan sesi ke database

Untuk menggunakan database untuk penyimpanan sesi, cukup simpan ini di aplikasi Anda / etc / local.xml :

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

atau Anda dapat menggunakan sesi redis / cache Sesi Memcached untuk menyimpan data dalam cache redis / Sesi Memcached

Untuk menggunakan toko sesi memcached di Magento Anda harus memiliki ini di aplikasi Anda / etc / local.xml :

<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>

Untuk informasi lebih lanjut tentang penyimpanan sesi, kunjungi tautan ini

Vaibhav Ahalpara
sumber
0

Salah satu solusinya adalah Anda dapat membuat pekerjaan cron yang berjalan sekali per hari untuk menghapus file yang Anda inginkan.

Di sini Anda dapat melihat cara mengatur pekerjaan cron: /ubuntu/2368/how-do-i-set-up-a-cron-job

tutorial cpanel untuk cronjob: http://support.hostgator.com/articles/cpanel/how-do-i-create-and-delete-a-cron-job

Anda dapat membuat skrip bash atau php yang akan melakukan operasi menghapus file. Dan letakkan skrip ini di cron, untuk dieksekusi waktu server 3 atau 4 pagi, ketika server kurang digunakan. Untuk menguji skrip berfungsi, Anda dapat menjalankannya secara manual.

Nikola
sumber
0

Buat file sh di root dokumen. Masukkan kode di bawah ini di dalamnya.

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

ubah jalur dengan jalur document_root Anda tanpa tanda kutip. Jalankan kode ini ketika ada lebih sedikit klik situs.

DIBUAT !!

Shyam Krishna Sreekumar
sumber
ini berfungsi untuk saya rm -rf var / session / *
Alam Zaib
Ini juga membunuh semua sesi aktif
Kevin Krieger