Как долго обрабатывается задание php cron, которое должно повторяться в течение короткого периода времени?

У меня есть задание php cron, которое нужно запускать каждую минуту. Работа занимает пять-семь минут. Как управляются такие типы cron? Прерывает ли он предыдущее задание и начинает работать как новое задание или запускает новое задание параллельно с предыдущим заданием? Должен ли я разбить большую работу на более мелкие и добавить каждую в качестве отдельного задания cron?


person Rahul K Jha    schedule 28.10.2015    source источник
comment
пожалуйста, добавьте свой cronjob (команды и т. д.)   -  person Lohardt    schedule 28.10.2015
comment
в такой ситуации вы можете использовать параллельную/многопоточность в PHP   -  person Nuriddin Rashidov    schedule 28.10.2015
comment
@Lohardt На самом деле cronjob - это длинный php-скрипт.   -  person Rahul K Jha    schedule 29.10.2015
comment
да, но как это выполняется, то есть какую команду вы используете? # * * * * * команда для выполнения   -  person Lohardt    schedule 30.10.2015
comment
Обычно сценарий не прерывается.   -  person Lohardt    schedule 30.10.2015


Ответы (1)


Я обычно делаю что-то вроде следующего в сценарии:

  1. Проверьте наличие файла блокировки. Если он найден, выйдите из скрипта
  2. Создать файл блокировки
  3. Сделайте некоторую обработку
  4. Освободите файл блокировки.
  5. Выход

Вам также может понадобиться добавить некоторую дополнительную логику на шаге 1, если сценарий прерывается по какой-то неизвестной причине и не удаляет файл блокировки. Например, файл блокировки может содержать PID создавшего его процесса. Затем следующий запуск задания может проверить наличие файла блокировки, а также наличие PID. Если какой-либо из них отсутствует, удалите файл блокировки и продолжайте работу, как будто его никогда не существовало.

person Scott Christensen    schedule 28.10.2015
comment
Я использовал этот подход с успехом. Но это не совсем то, о чем спрашивает ОП. Вы решаете проблему, которую он, скорее всего, получит в послесловии :) - person Lohardt; 30.10.2015