如何自動檢測session過期?
個(gè)人認(rèn)為,能不用session,盡量不用SESSION吧,因?yàn)镾ESSION有單機(jī)的問題,不適合集群,而且SESSION的回收清理也不太方便,很容易受到攻擊,比如說用SESSION記錄驗(yàn)證碼,如果有人CC攻擊驗(yàn)證碼,就會產(chǎn)生很多垃圾數(shù)據(jù).PHP默認(rèn)是一個(gè)SESSION對應(yīng)一個(gè)磁盤文件.Ubuntu/Debian上apt安裝的PHP會帶有一個(gè)定時(shí)任務(wù)/etc/cron.d/php5來清理會話文件.即使用Redis存儲PHP SESSION,并設(shè)置了過期時(shí)間,也只能依賴Redis周期性隨機(jī)檢測這種被動的過期機(jī)制來清除會話記錄(有殘余).
Memcached作者說過,Memcached不適合存SESSION,因?yàn)镸emcached默認(rèn)的LRU清理機(jī)制會在內(nèi)存不足時(shí)清理掉一些記錄,可能會導(dǎo)致用戶無緣無故地掉線.Redis默認(rèn)設(shè)置是noeviction(不收回),內(nèi)存不夠直接報(bào)錯(cuò).