Php延迟发送数据5分钟


Php delay sending data for 5 minutes

我有一些数据插入到数据库后表单提交。在它们被插入到数据库后,我需要将这些数据发送到电子邮件,但我必须等待5分钟才能发送它们。

有没有办法让我用睡眠功能等5分钟呢?我不希望用户等待5分钟来执行脚本。

我是这么想的:

1)提交表单并插入数据到数据库

2)将插入的行id发送给服务器上运行的其他脚本作为进程

3) 5分钟后发送电子邮件,脚本作为进程运行

4)如果有更多,那么让50个id暂停,启动新进程并再次执行3-4个步骤。

这正是我所想的。

我不知道从哪里开始。

请给我指路。我不需要现成的溶液。

我不想使用cron job!

伪代码中的错误答案是

Put record in queue with timestamp eg a database
Write server process to monitor queue and see if 5 mins has passed
Send mail if 5 mins have passed.
Write monitoring system to monitor server process and ensure it is working.

更好的答案是使用linux at函数(如果可用)或其他依赖于未指定平台的预先存在的任务调度系统。安排任务在特定时间发生正是你需要做的,这也是这些系统设计的目的。

您可以按照如下方式安排5分钟后运行的任务…

在Windows:

使用PHP为Windows调度器添加任务

在Linux上

:

shell_exec("echo 'date > /some/dir/date.txt' | at now + 1 minute");

最好的方式,你可以插入你的表单数据与时间字段,这将保持插入时间的记录。在另一方面,您创建一个PHP文件与30 SECMETA refresh,这将检查所有的记录已成熟的5 Mintues时间和做你想做的,也标记的状态,已执行的行动,使这些记录不被再次选择。