Блокируем повторный запуск php-скрипта из crontab

Нередко приходится встречатся с ситуацией когда скрипт, запускаемый из crontab-а не успевает отработать за положенное ему время, стартует еще одна его копия, а потом еще, еще и еще… Вовремя не заметить - может и сервер лечь.

Господам програмерам зачастую фиолетово на эти проблемы, так что приходится спасаться самому. Вот такой несложный код в начале php-скрипта, с использованием ф-ии flock не даст запустится второй копии:

$fh_lock = fopen( ‘/tmp/myscript.lock’, ‘w’ );

if( ! ( $fh_lock && flock( $fh_lock, LOCK_EX | LOCK_NB ) ) )
exit;

Предполагается, что имя lock-файла уникально для каждого скрипта, но так же можно и группу скриптов блокировать при необходимости, используя одинаковые. Так же предполагается, что скрипты выполняются с правами одного и того же user-а, в противном случае нужно дополнительно установить на lock-файл необходимые права доступа.

Tags: , ,

забобрить сохранить в memori

Leave a Reply

You must be logged in to post a comment.