обработка параллелизма в cron php

0

Я настраиваю задание cron, которое каждую минуту выполняет скрипт page.php, который я хотел узнать о параллелизме. Сценарий сам забирает 15 минут, и как будет работать cron?

Lets take a time frame of 15 minutes, how many crons will run in that time? 1 or 15?

will cron runs till its completion or it can be interrupted?

Thanks.
Теги:
amazon-web-services
cron
amazon-ec2
jobs

3 ответа

0

это зависит от ваших запланированных задач/настроек cron. Вы можете настроить запуск 15-кратного PHP-скрипта или запуск его при выполнении предыдущего задания.
Ваша запланированная задача /cron может быть прервана ею самостоятельно, внешним сигналом или также конфигурацией, которую вы сделали в запланированной задаче /cron (прекратите работу, если она не закончена в N минутах...)
Надеюсь, это поможет :)

0

Когда вы запускаете PHP-скрипт через cron, он будет работать до тех пор, пока он не завершится или не будет превышено время выполнения. Система всегда будет запускать новый экземпляр скрипта, будет ли последний скрипт работать или нет.

Если вы знаете, что сценарий работает долгое время, вы должны настроить сценарий bash, который проверяет, запущен ли скрипт и только запускает скрипт php, если это не так.

0

Cron не обрабатывает параллелизм для вас - ваш скрипт должен это сделать.

Оказывается, это довольно просто, поскольку существует тривиальная операция PHP, то есть atom: unlink().

Мы склонны использовать его таким образом:

  • файл глобального флага позволяет сценарию
  • Основное задание cron ничего не делает, кроме касания файла флага таймера
  • Каждую минуту другое задание cron запускает рабочий сценарий
  • Этот рабочий сценарий пытается unlink() в файле глобального флага
  • Если этого не произойдет (результат оценивается как false), он завершает работу (это гарантирует, что за один раз запускается только один экземпляр)
  • Этот рабочий сценарий пытается unlink() в файле флага таймера
  • Если это не сработает (результат оценивается как false), он touch() файл глобального флага и завершает работу (это гарантирует, что один запуск cron начинается не более одного экземпляра)
  • Теперь он запускается
  • после завершения touch() файл глобального флага, чтобы перезапустить цикл

Таким образом, cron запускает, что приведет к параллелизму, не учитывается.

  • 0
    это был не мой вопрос вообще
  • 0
    Вы можете отредактировать свой вопрос, чтобы объяснить его немного лучше - может быть, я не единственный, кто неправильно понял это?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню