Magento CMS ve benzerleri için (eski oturumları temizlemiyor), sadece php.ini ayarlarına göre cron işleri kullanıyorum.
PHP5 / Ubuntu 14.04 / Debian
Php5 için sistem cron.d kurulumu Magento ./var/session (ya da varsayılan oturum klasörü dışında herhangi bir şeyi temizlemez) (Ubuntu için / var / lib / php5 ve diğer birçok Linux için / var / lib / php5 / sessions veya / tmp / dists).
Ancak hala php5 / Debian sistem cronu varsayılanına göre "sessionclean" ve "maxlifetime" kullanabilirsiniz:
Komut satırından deneyebileceğiniz örnek:
# sudo /usr/lib/php5/sessionclean /var/www/{yoursite}/var/session $(/usr/lib/php5/maxlifetime)
Bu nedenle, bunu yalnızca bir sistem / kök crontab dosyasına veya oturum dosyaları için okuma / yazma iznine sahip bir kullanıcı crontabına ekleyin:
$ sudo crontab -e
Eklediğiniz sistem php cron'una benzemesini istiyorsanız:
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)
veya - bu dosyaların / dirlerin var olduğunu bildiğimiz için:
20,40 * * * * /usr/lib/php5/sessionclean /var/www/*/var/session $(/usr/lib/php5/maxlifetime)
Şimdi yönetilebilir miktarda oturumum var ve php.ini (cli) ayarları ile varsayılan çöp toplama / kullanım süresi boyunca temiz tutuluyor.
(Joker karakteri yukarıda bırakabilir veya site adıyla değiştirebilirsiniz.)
EDIT (PHP7 / Ubuntu 16.xx / Debian):
'Sessionclean' betiği değişti ve maxlifetime betiği kaldırıldı. Sistem / php cron işi için şimdi bir betik. Dosya çağrıları artık komut dosyası için statik olduğundan, artık bunu gerçekten kullanamazsınız.
Sistem temizlenmezse eski php5 sessionclean betiği hala sizin için çalışabilir. Yapabileceğin şey eski Debian php5 Paketini kapmak ve sessionclean
ondan çıkarmak . Ya da bunu komut dosyası alanınıza kopyalayabilirsiniz (uygun / var / www / (site) izinleri / sahiplik vererek):
#!/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
Ben de yeniden adlandırmanızı öneririz, bu yüzden yeni php 'sessionclean' cronjob ile karıştırılmaz. Daha sonra kendi "maksimum kullanım süresi" numaranızı şöyle ekleyebilirsiniz:
20,40 * * * * /home/-username-/scripts/MySessionClean /var/www/*/var/session 61
(61 yaşın (dakika olarak) olması ve 'MySessionClean', yukardan indirilen veya kopyalanan yeniden adlandırılan php5 betiğidir).
Bu şekilde php.ini / env çağrılarından tamamen kaçınırız.
(EDIT 13DEC2016: DEBIAN ARCHIVE REPO LINK güncellendi)