Очистка php сессий в ubuntu и debian: различия между версиями
Материал из support.qbpro.ru
imported>Vix Нет описания правки |
imported>Vix Нет описания правки |
||
(не показаны 2 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
Debian я так понимаю пошел своим путем и для очистки сесий использует скрипт из крона который, чистит файлы со старыми php сессиями. | '''Debian я так понимаю пошел своим путем и для очистки сесий использует скрипт из крона который, чистит файлы со старыми php сессиями'''. | ||
Выглядит этот скрипт вот так | Выглядит этот скрипт вот так | ||
32093? Ss 0:00 /bin/sh -c [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ]&& find /var/lib/php5/ <br> | 32093? Ss 0:00 /bin/sh -c [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ]&& find /var/lib/php5/ <br> | ||
-depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr /lib/php5/maxlifetime)!-execdir fuser -s {} 2>/dev/null \; -delete <br> | -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr /lib/php5/maxlifetime)!-execdir fuser -s {} 2>/dev/null \; -delete <br> | ||
32098? S 1:54 find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +24! -execdir fuser -s {}; -delete | 32098? S 1:54 find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +24! -execdir fuser -s {}; -delete | ||
находится тут: | |||
/etc/cron.d/php5 | |||
Большая проблема что он сильно грузит винт, скрипт не успевает отрабатывать удаление файлов и запускается снова,<br> | |||
в моменты когда сессий очень много запускается несколько десятков скриптов на очистку сессий и они съедают весь процессор. | |||
для решения делаем так: | |||
Называется '''flock'''. | |||
Использовать примерно так в кроне: | |||
0 0 * * * root flock -n /tmp/somefile.lock "somecsript.sh" | |||
Второй запуск команды | |||
flock -n /tmp/somefile.lock "somecsript.sh" | |||
уже не случится до тех пор, пока первый инстанс работает. | |||
В somescript.sh, соответственно, пихаете всё то, что запускается у вас сейчас (chmod +x на скрипт не забудьте). | |||
* [https://toster.ru/q/28525 взято тут...] |
Текущая версия от 23:48, 17 февраля 2014
Debian я так понимаю пошел своим путем и для очистки сесий использует скрипт из крона который, чистит файлы со старыми php сессиями. Выглядит этот скрипт вот так
32093? Ss 0:00 /bin/sh -c [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ]&& find /var/lib/php5/
-depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr /lib/php5/maxlifetime)!-execdir fuser -s {} 2>/dev/null \; -delete
32098? S 1:54 find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +24! -execdir fuser -s {}; -delete
находится тут:
/etc/cron.d/php5
Большая проблема что он сильно грузит винт, скрипт не успевает отрабатывать удаление файлов и запускается снова,
в моменты когда сессий очень много запускается несколько десятков скриптов на очистку сессий и они съедают весь процессор.
для решения делаем так:
Называется flock.
Использовать примерно так в кроне:
0 0 * * * root flock -n /tmp/somefile.lock "somecsript.sh"
Второй запуск команды
flock -n /tmp/somefile.lock "somecsript.sh"
уже не случится до тех пор, пока первый инстанс работает.
В somescript.sh, соответственно, пихаете всё то, что запускается у вас сейчас (chmod +x на скрипт не забудьте).