2016-04-18 4 views
1

После некоторых исследований я не нашел ответчиков за то, чего я пытаюсь достичь. Я нашел некоторую информацию о функции php sleep() и некоторых новостях о заданиях CRON, но ни один из этих вариантов, похоже, не решает проблему.Ждать после получения Webhook

Вот что я пытаюсь сделать: у меня есть файл php, который может получать webhooks. Мне нужно подождать некоторое время (например, 15 минут), прежде чем «реагировать» на этот веб-сайт. Так, в принципе, мой сценарий должен: 1 - получить webhook (уже сделан с текущим кодом) 2 - подождать некоторое время 3 - делать какое-то действие (уже сделано)

Я уже сделал то, что мне нужно было без часть ожидания, и это работает очень хорошо, но теперь я не знаю, как это сделать ...

Если я это хорошо понял, Cron Jobs выполняется периодически, в то время как я хочу подождать некоторое время, только когда получен webhook. Я думал о функции sleep(), но я боюсь, что он может использовать много ресурсов ...

Как я могу это сделать?

Обновление: Кажется, я не могу использовать функцию сна более чем на 30 секунд

+0

Я думаю, что функция сна на самом деле то, что вам нужно –

+0

Спасибо. Но, пожалуйста, см. Мое обновление: когда я использую значение более 30 секунд, конец скрипта никогда не выполняется ... –

+0

Вы также можете использовать функцию time(), чтобы сохранить время, когда вы получили свой веб-чек. затем используйте что-то вроде while (time()

ответ

1

Если бы я был вами, я бы построил систему очередей, чтобы при входе в веб-узел была вставлена ​​строка в базе данных. Я бы добавил столбец для «execute_time» и установил это на 15 минут после входа в webhook. Затем вы можете настроить задание cron, которое выполняется каждую минуту, но только огни, где время исполнения «сейчас».

+0

Спасибо за ваш ответ. Не могли бы вы объяснить немного больше, как вы это сделаете? В частности, часть работы cron ... (я имею в виду, что ее запускать каждую минуту будет использовать много ресурсов, не так ли?) В любом случае, спасибо, это лучший вариант ... –

+0

Он ничего не будет использовать ресурсы, которые хранят несколько экземпляров одного и того же сценария в памяти в течение 15 минут за раз перед выполнением. Запуск Cron Jobs каждую минуту очень нормальный. Я не могу дать больше объяснений, не зная, что делает ваш webhook. – H2ONOCK

+0

Хорошо, это то, что мне нужно было услышать (ну, чтобы прочитать факты ...).Я дам ему попробовать как можно скорее, спасибо! –

0

использование хрон

(максимальное время исполнения я думаю?) «На каждом 15-й минуте каждого часа.»

Minute Hour Day Month Weekday Command 

15  *  * *  *  php /homelink/path/filename.php 

Примечание:

Вы можете установить адрес электронной почты для cron. Каждый триггер отправляет уведомление по электронной почте. Если получение электронной почты означает, что cron работает, если нет, тогда вам нужно проверить свой код. Также вы можете отлаживать с помощью соответствующего эха.

+0

Спасибо за ответ, но он не будет выполняться каждый час, даже если не получен веб-чек? И что, если я получу webhook за 1 минуту до запланированного времени? –

Смежные вопросы