RTFM.WIKI

Ordnung muß sein. Ordnung über alles (18+)

Инструменты пользователя

Инструменты сайта


web:php_session_cleanup

Проблема с удалением PHP сессий

Описание проблемы:

Удалить сотни-тысячи-миллионы файлов в каталоге:

Документация PHP.NET

Что настроить, чтобы такого не было:

Пример

session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440 

UPDATE

Посмотреть количество файлов в mod-tmp

ls -R /var/www/*/data/mod-tmp | wc -l
ls -R /var/www/*/data/bin-tmp | wc -l

Удалить

find /var/www/*/data/mod-tmp -name "sess_*" -type f -exec rm {} \;
find /var/www/*/data/bin-tmp -name "sess_*" -type f -exec rm {} \;

Если файлов очень много, то появится ошибка find: cannot fork: Cannot allocate memory.

Новый вариант с nice (searchengines)

nice -n 19 ionice -c3 find /var/www/user1/data/mod-tmp/ -maxdepth 1 -type f -name sess* | xargs -n1 nice -n 19 ionice -c3 rm

Ещё один вариант

cd /root/
mkdir empty_dir
rsync -a --delete /root/empty_dir/ /var/www/user1/data/mod-tmp/

tmpwatch/tmpreaper + ionice.

The tmpwatch utility recursively searches through specified directories and removes files which have not been accessed in a specified period of time. Tmpwatch is normally used to clean up directories which are used for temporarily holding files (for example, /tmp). Tmpwatch ignores symlinks, won't switch filesystems and only removes empty directories and regular files.

Поискав более изящные решения нашёл интересные ссылки

UPD май-2021 - Cleanup PHP Sessions like a PRO

Пример GC для разных сайтов

 /usr/bin/php -d session.save_path=/srv/www/foo.example.com/sessions \
  -d session.gc_probability=1 \
  -d session.gc_divisor=1 \ 
  -d session.gc_maxlifetime=86400 \
  -r "session_start(); session_destroy();"
 
 /usr/bin/php -d session.save_path=/srv/www/bar.example.com/sessions \
  -d session.gc_probability=1 \
  -d session.gc_divisor=1 \ 
  -d session.gc_maxlifetime=3600 \
  -r "session_start(); session_destroy();"
9,39 * * * * /usr/bin/php -d session.save_path=/srv/www/foo.example.com/sessions -d session.gc_probability=1 -d session.gc_divisor=1 -d session.gc_maxlifetime=86400 -r "session_start(); session_destroy();"
19,49 * * * * /usr/bin/php -d session.save_path=/srv/www/bar.example.com/sessions -d session.gc_probability=1 -d session.gc_divisor=1 -d session.gc_maxlifetime=3600 -r "session_start(); session_destroy();"

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
 
web/php_session_cleanup.txt · Последнее изменение: 2021/05/09 03:38 — 127.0.0.1