Задать вопрос
@XXX-prog

Как заблочить исполнение скрипта, если он уже запущен?

Подскажите, как заблочить повторный запуск скрипта по крону, если предыдущий запуск скрипта еще не завершил работу, или завершил но с ошибкой (фатал еррор)?
Речь идет о PHP и Cron
В общем решение пока такое:
Это в конструктор
register_shutdown_function(array(&$this,"shutdown_handler"));

А это обработчик
public function shutdown_handler(){
      @fclose($this->fp);
    }

Блочим так:
$this->fp = fopen('tmp/lock.txt', 'w');

if(!flock($this->fp, LOCK_EX | LOCK_NB)) {
    echo("Script already running");
    exit(-1);
}
  • Вопрос задан
  • 926 просмотров
Подписаться 1 Оценить Комментировать
Ответ пользователя Night К ответам на вопрос (3)
@maxtm
Make money, not job
При старте пишите свой PID в файл.
При старте читает PID, чекаете - если процесс живет и он ваш - выходите.
Если процесса нет - стартуете.

Надеятся на то, что ваш скрипт доработает до конца и удалить файл не стоит, всякое бывает.
Ответ написан