PHP在提交时间后15分钟自动发送通知


PHP auto send notification 15min after the submission time

我想知道如何在不使用cronjob的情况下向用户发送通知。

  • 以下是场景
    一旦用户A提交了表格来接他/她,如果在15分钟内没有人回复该用户A,请通知管理员(通过电子邮件或将数据库状态更改为"挂起",并在网络面板中发出警报或某种通知)

PHP或任何库或脚本中是否有任何工具可供使用?如何解决这种情况?

提前感谢您的帮助:)对不起,如果我的英语不好:(

在laravel中,您可以将作业添加到队列中。你也可以把工作推迟一段时间。因此,每次收到新请求时,都可以将作业NotifyAdminIfNoStatusChangeJob添加到队列中,就像一样

public function sendNotificationEmail(...)
    {
        //...
        $job = (new NotifyAdminIfNoStatusChangeJob($user))->delay(900);
        $this->dispatch($job);
    }

所以你可以在工作中检查状态并通知管理员。注意,作业将在15分钟后执行,它将根据需要执行。

在此处检查延迟队列:http://laravel.com/docs/5.1/queues#delayed-作业

您应该为此设置cron作业。您可以比较以分钟为单位的时间差,然后根据条件发送电子邮件或更新数据库。

您可以运行PHP脚本。不过,您必须通过CLI界面进行操作。

#!/usr/bin/env php
<?php
# This file would be say, '/usr/local/bin/run.php'
// code
echo "this was run from CRON"

然后,在crontab中添加一个条目:

* * * * * /usr/bin/php -f /usr/local/bin/run.php &> /dev/null

如果run.php脚本具有可执行权限,那么它可以直接列在crontab中,而不包含/usr/bin.php部分。脚本中的"env-php"部分将找到适当的程序来实际运行php代码。因此,对于"可执行"版本,请将可执行权限添加到文件中:

chmod +x /usr/local/bin/run.php

然后在crontab中添加以下条目:

* * * * * /usr/local/bin/run.php &> /dev/null