Я хочу запустить скрипт, который будет сканировать базу данных и выполнять операции автоматически, но без использования cron. Я использую PHP в качестве языка программирования и MySQL в качестве СУБД. Здесь я упомянул быстрое представление о функциональности, которую я пытаюсь развить
У меня есть модуль, в котором мне нужно уведомлять пользователя о динамическом времени продолжительностью 24 часа. То есть пользователь публикует одно сообщение, и если он не получит никакого ответа в течение 24 часов, он получит уведомление автоматически. Таким образом, если один пользователь отправил сообщение в 20:30, он получит уведомление на второй день в то же время. Если второй пользователь отправил сообщение в 19:30, он получит уведомление во второй день в 19:30.
Теперь, первая мысль пришла бы о настройке cron, так как в идеале должен быть своего рода планировщик, который запускает скрипт в соответствии с расписанием. В этом случае нам нужно запланировать определенный интервал для автоматического запуска скрипта, но здесь у меня не будет никакого фиксированного времени интервала. Я знаю, что мы можем сделать это, установив cron за считанные минуты, но я не нахожу эту опцию возможной, чтобы сервер запускал скрипт каждые 5-10 минут. Итак, я решил найти альтернативу (если это возможно) и подумал, есть ли какая-либо техника в PHP или на сервере, где скрипт будет автоматически запускаться, сканировать БД, извлекать время и, если он достиг 24 часов, затем отправить уведомление ,
Я получил предложение использовать сокет от одного из моих коллег, однако, что я тоже не нахожу полезным
Я не уверен, есть ли способ. Так что, если вы, ребята, можете помочь мне найти ответ, то это будет очень полезно для моих исследований для улучшения.
Заранее спасибо!
То, что вы хотите, и descibing, является Кронджоб.
«но здесь я не буду иметь фиксированное время интервала»
Вы имеете в виду, что вы не можете получить что-то вроде «Я хочу этот пользователь получит уведомление через 24 часа, но это так не работает «?
Если это так, то это логическая проблема, которая может быть решена с помощью чего-то вроде:
$users2notify = getUsersWithAction24hoursAgo();
notifyUsers( $users2notify ); // only notify actual needed users
Если у вас не может быть cronjobs из-за технических ограничений, я рекомендую сменить хостинг. На самом деле нет правильной альтернативы cronjobs, потому что cronjobs делают свою работу очень хорошо.
PS: предложение ваших друзей о сокете, игнорируйте его, так как оно просто переносит проблему на Javascript.
С помощью cron
самое простое и самое простое решение PHP, но если вы действительно ненавидите cron
Вы можете начать nodejs
приложение, которое задержит запрос на 24 часа: вы отправляете запрос на http://localhost:5000/delay?replayTo=http://localhost:80/checkUser?id=$idOfUserToCheck
и nodejs сделает запрос get через 24 часа; вам нужно будет разработать приложение nodejs, но это не так сложно.
В этом примере 5000 — это порт, который будет слушать приложение nodejs; это может быть любой неиспользуемый порт.