Запуск php-скрипта с cron mac — каждые 10 секунд

#macos #cron

#macos #cron

Вопрос:

Я пытаюсь запустить на mac php-скрипт с использованием cron. Я хочу, чтобы этот php-скрипт запускался каждые 10 секунд. Я прочитал несколько источников в Интернете, и, насколько я понимаю, будет лучше, если я использую launchd. В любом случае, я пытаюсь заставить его работать с cron, а затем, если он работает нормально, я мог бы попробовать использовать launchd.

Итак, вот что я делаю, но он запускается каждую минуту:

 */1 * * * * /usr/bin/curl --silent --compressed http://localhost:8888/atms_final/data/demos/editing/loop_tasks.php 
 

Как я могу изменить его для запуска каждые 10 секунд

Комментарии:

1. Cron допускает только минимум одну минуту. Что вы могли бы сделать, так это написать сценарий оболочки с бесконечным циклом, который запускает вашу задачу, а затем переходит в спящий режим на 10 секунд. Таким образом, ваша задача будет выполняться более или менее каждые 10 секунд, в зависимости от того, сколько времени занимает сама задача.

Ответ №1:

cron слишком грубовато для 10-секундной частоты повторения.

Подумайте о создании небольшого скрипта, подобного этому, и сохраните его как curler

 #!/bin/bash
while :; do
   echo curling...
   /usr/bin/curl --silent --compressed http://localhost:8888/atms_final/data/demos/editing/loop_tasks.php
   sleep 10
done
 

Затем в терминале вы можете сделать его исполняемым (просто сделайте это один раз):

 chmod  x curler
 

Затем вы можете запустить это в терминале:

 ./curler
 

Или вы можете запустить один curler раз из cron .

Ответ №2:

Вы можете сделать это следующим образом —

 */1 * * * * curl --silent --compressed http://localhost:8888

*/1 * * * * sleep 10; curl --silent --compressed http://localhost:8888

*/1 * * * * sleep 20; curl --silent --compressed http://localhost:8888

*/1 * * * * sleep 30; curl --silent --compressed http://localhost:8888

*/1 * * * * sleep 40; curl --silent --compressed http://localhost:8888

*/1 * * * * sleep 50; curl --silent --compressed http://localhost:8888
 

Объяснение —

Таким образом, технически у вас есть 6 заданий cron, которые выполняются каждую минуту, но у каждого задания есть время ожидания, из-за чего все выполняются с разницей в 10 секунд.