веб-сервисы Amazon — обработка параллелизма в cron Stack Overflow

Я настраиваю задание 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.

0

Решение

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

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

0

Другие решения

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

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

Мы склонны использовать это так:

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

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

0

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

Надеюсь, это поможет 🙂

0
По вопросам рекламы [email protected]