使用php设置延迟通知

时间:2017-05-18 18:43:01

标签: javascript php jquery html ajax

我需要编写一个php函数,用于在4小时后发送电报通知。

随着应用程序将数据发布到SQL数据库中,在按下“提交”按钮后,我需要启动php功能,并在2天后向我的Telegram通道发送通知,其中包含一些数据我已经发布到db记录中了。

对于发布部分和电报部分我好,我已经将网站链接到频道,并且正常通知来自php工作正常,但我需要一些关于"提醒的建议&# 34;一部分。

我正在考虑一些date()函数并将值发布到记录中,使用日期+ 2days制作另一个变量,然后制作一些for或while循环,但我不认为这可行。一些忠告? 我是php的新手,也许我不知道哪些功能可以帮助我?

2 个答案:

答案 0 :(得分:0)

  • 在表格中添加一栏,并将其命名为 notification_send ,并将其设为默认值 0
  • 创建一个调用php文件的crontab,例如:
    • * / 60 * * * * php -f /etc/www/my_notification.php :每60分钟调用一次文件
  • 在此文件中创建一个查询,选择 notification_send = 0 的所有数据,然后检查 current_date - 日期每行的列=> 2天 :
    • 如果是这样:将 notification_send 值更新为 1 并发送通知

答案 1 :(得分:0)

正如我评论的那样,你的方法是正确的。然而,当你问了更多的东西时,我选择了回答。

正如您所问,当您发送电报通知时,您必须在2天(48小时)后发送提醒通知。如果我是对的,那就是电子邮件。

首先,正如你所说,你必须创建一个列来警告何时应该发送记忆。

此外,要知道是否已发送提醒,您必须创建另一列。它可以是一个标记(true / false)或datetime列(null =未发送,filled =已发送)。

除此之外,cronjob或日程表必须调用PHP脚本。我将向您展示一个PHP脚本示例。

我会将该表格称为reminder以及列sendInisSent

//select only the reminder that has the sendIn lesser than now and that not has been sent
$statement = $pdo->query("SELECT * FROM reminder WHERE sendIn <= NOW() AND isSent is null");

//prepared statement to update the reminder sent
$updateStatement = $pdo->query("UPDATE reminder SET isSent = NOW() WHERE id = :id");
foreach($statement as $reminder)
{
    /**
      script to send the reminder

    **/

    //update the reminder
    $updateStatement->execute(array(':id' , $reminder['id']));
}

要创建一个cronjob,你可以看看这里: https://askubuntu.com/questions/2368/how-do-i-set-up-a-cron-job

您无需删除cron,只需让它定期运行并发送所有提醒。