andreys75
@andreys75

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

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

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

Что то не смог нагуглить как создать крон задачу из пхп скрипта.
Заранее спасибо.
  • Вопрос задан
  • 3266 просмотров
Пригласить эксперта
Ответы на вопрос 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% времени". От того, что скрипт каждую минуту будет запускаться по крону, смотреть в бд есть ли для него работа и, если нет, завершаться - не будет никаких негативных эффектов, это практически не потребляет никаких ресурсов.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
Бюро Цифровых Технологий Санкт-Петербург
от 120 000 до 180 000 ₽
03 мая 2024, в 16:09
1200 руб./за проект
03 мая 2024, в 16:06
3000 руб./за проект
03 мая 2024, в 15:48
2000 руб./за проект