Untuk Magento CMS dan sejenisnya (yang tidak membersihkan sesi lama), saya hanya menggunakan pekerjaan cron berdasarkan pengaturan php.ini.
PHP5 / Ubuntu 14.04 / Debian
Pengaturan cron.d sistem untuk php5 tidak membersihkan Magento ./var/session (atau apa pun selain folder sesi default (/ var / lib / php5 untuk Ubuntu dan / var / lib / php5 / sesi atau / tmp / untuk kebanyakan Linux lainnya) dists).
Tetapi Anda masih dapat menggunakan "sessionclean" dan "maxlifetime" sesuai dengan cron sistem php5 / Debian default:
Contoh Anda dapat mencoba dari baris Perintah:
# sudo /usr/lib/php5/sessionclean /var/www/{yoursite}/var/session $(/usr/lib/php5/maxlifetime)
Jadi masukkan saja itu ke dalam sistem / root crontab atau crontab pengguna yang memiliki izin baca / tulis untuk file sesi:
$ sudo crontab -e
Tambahkan ini, Anda ingin tampilannya mirip dengan sistem php cron:
20,40 * * * * [ -x /usr/lib/php5/maxlifetime ] && [ -x /usr/lib/php5/sessionclean ] && [ -d /var/www/*/var/session ] && /usr/lib/php5/sessionclean /var/www/{yoursite}/var/session $(/usr/lib/php5/maxlifetime)
atau - karena kita tahu file / dir itu ada:
20,40 * * * * /usr/lib/php5/sessionclean /var/www/*/var/session $(/usr/lib/php5/maxlifetime)
Sekarang saya memiliki sejumlah sesi yang dapat dikelola dan tetap bersih melalui pengumpulan sampah / masa pakai default melalui pengaturan php.ini (cli).
(Anda dapat meninggalkan wildcard di atas atau mengganti dengan sitename.)
EDIT (PHP7 / Ubuntu 16.xx / Debian):
Script 'sessionclean' telah berubah dan script maxlifetime telah dihapus. Untuk pekerjaan sistem / php cron sekarang menjadi satu skrip. Anda tidak dapat benar-benar menggunakan ini lagi karena panggilan file sekarang statis ke skrip.
Script sessionclean php5 yang lebih lama masih dapat bekerja untuk Anda jika sistem tidak membersihkan. Yang bisa Anda lakukan adalah mengambil Paket php5 Debian yang lebih lama dan mengekstraknya sessionclean
. Atau Anda cukup menyalin ini ke area skrip Anda (memberikan izin / kepemilikan / var / www / (situs) yang tepat):
#!/bin/sh
# first find all used files and touch them (hope it's not massive amount of files)
[ -x /usr/bin/lsof ] && /usr/bin/lsof -w -l +d "${1}" | awk -- '{ if (NR > 1) { print $9; } }' | xargs -i touch -c {}
# find all files older then maxlifetime
find "${1}" -depth -mindepth 1 -maxdepth 1 -ignore_readdir_race -type f -cmin "+${2}" -delete
Saya juga merekomendasikan untuk mengganti nama itu, jadi itu tidak bingung dengan cronjob php 'sessionclean' baru. Anda kemudian dapat memasukkan nomor "maxlifetime" sendiri seperti:
20,40 * * * * /home/-username-/scripts/MySessionClean /var/www/*/var/session 61
(61 menjadi contoh usia (dalam menit) dan 'MySessionClean' menjadi skrip php5 yang diganti nama diunduh atau disalin dari atas).
Dengan cara ini kami menghindari panggilan php.ini / env sepenuhnya.
(EDIT 13DEC2016: Diperbarui DEBIAN ARCHIVE REPO LINK)