简体   繁体   中英

Deleting old session files from custom set session folder?

Using PHP, if I set a custom session folder to store session files, what must I do to make sure that old session files eventually get deleted? Is there a way to have Apache or PHP handle this for me, or do I need to set something up to clean this folder out myself? Any information on this subject is greatly appreciated.

I am currently using session_save_path() to change the session folder if that makes a difference.

As long as you don't use the N; option on php's session.save_path setting, PHP will auto-clean stale sessions according to the session.gc_probability / session.gc_divisor / session.max_lifetime settings

If you've rolled your own session handlers, you'll be responsible for the cleanup.

Yes, you need to manually clean them up because you've setup your own session save path . (Today it's said it's for the split directory option only, but I have servers where this is still needed even not using that feature but using a custom session save path and it's some PHP 5.2.x and I need to manually clean.)

You can check the age of a file and delete if it's older than x days/minutes whatever:

cd /path/to/sessions; find -cmin +24 | xargs rm

Taken from the note part of php.ini :

; NOTE: If you are using the subdirectory option for storing session files
;       (see session.save_path above), then garbage collection does *not*
;       happen automatically.  You will need to do your own garbage
;       collection through a shell script, cron entry, or some other method.
;       For example, the following script would is the equivalent of
;       setting session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes):
;          cd /path/to/sessions; find -cmin +24 | xargs rm

See as well this related/duplicate question: cleanup php session files


"Single" command:

find /path/to/session -name sess_* -cmin +24 -exec rm {} \;

You will need to periodically clean custom PHP sessions directory. You can run a CRON job to handle the answer by @hakre

We use Plesk and it has a handy CRON/Task manager under Tools & Settings > Scheduled Tasks. You can create a new task and run a script/command at set intervals.

Another point is that it is quite good to run custom session paths if you are on a shared server or the session directory is shared with other sites/resourses.

I'm posting this here as the answer/topic was useful and I've not found much advice online for custom PHP session_path

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM