andreys75
@andreys75

Как запустить PHP скрипт с задержкой в несколько часов?

Здравствуйте!

Мне необходимо скриптом обрабатывать информацию с удаленного ресурса. Периодически этот ресурс становится недоступен на несколько часов. Мне необходимо из php скрипта, после того как я определил, что удаленный ресурс в данный момент недоступен, сделать из скрипта крон задачу, чтобы скрипт опять запустился через несколько часов.

Что то не смог нагуглить как создать крон задачу из пхп скрипта.
Заранее спасибо.
  • Вопрос задан
  • 3275 просмотров
Пригласить эксперта
Ответы на вопрос 5
kotomyava
@kotomyava
Системный администратор
Вам надо запускать по крону регулярно скрипт, который будет смотреть, есть-ли какая-нибудь задача и подошло-ли время её выполнения. И Если да, выполнять. Если в процессе выполнения произошла ошибка куда-нибудь сохраняется время(файл, база, key-value), когда надо будет повторить попытку.

Т.е. вам не надо из php создавать задания крон, вам надо создавать здания для своего периодически выполняющегося скрипта.
Ответ написан
vvpoloskin
@vvpoloskin
Инженер связи
#!/bin/bash
if ! ping -c2 -W2 192.168.1.1 > /dev/null ;then 
   at now + 2 hour <<EOF
<ТВОЙ-СКРИПТ>
EOF
fi

Пойдет такое решение? Правда вообще без крона)
Ответ написан
Ответ написан
Комментировать
evnuh
@evnuh
Поиск Гугл помог мне, впусти и ты его в свой дом
все просто )))
while (true) {
    ...
   sleep( 60 * 60 * 4 ); 
}
Ответ написан
fornit1917
@fornit1917
Автор, зря вы считаете что организация очереди отложенных задач с помощью крона и базы данных это не очень хорошая идея. Это хорошая идея. Данный подход прост, популярен, эффективен, используется довольно широко. А вот о подходе с динамической постановкой/удалением задачи в крон из пхп я слышу впервые и он попахивает костылями имхо.
Вас зря смущает, что "крон задача будет ничего не делать 99% времени". От того, что скрипт каждую минуту будет запускаться по крону, смотреть в бд есть ли для него работа и, если нет, завершаться - не будет никаких негативных эффектов, это практически не потребляет никаких ресурсов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы