Очистка php сессий в ubuntu и debian: различия между версиями

Материал из support.qbpro.ru
imported>Vix
Нет описания правки
imported>Vix
Нет описания правки
Строка 5: Строка 5:
  -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 на скрипт не забудьте).

Версия от 23:47, 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 на скрипт не забудьте).