Php延迟发送数据5分钟

时间:2013-05-01 10:19:01

标签: php linux zend-framework

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

无论如何,我可以等待5分钟,假设有睡眠功能。我不希望用户等待5分钟才能执行脚本。

这就是我的想法:

1)提交表单并将数据插入db

2)将插入的行id发送到在服务器上以某种方式运行的其他脚本作为进程

3)5分钟后发送电子邮件,其中包含作为流程运行的脚本

4)如果还有更多,那就让50个ID保持启动新进程并再次执行3-4步。

这正是我的想法。

我不知道从哪里开始。

请给我一些指示。我不需要redy来使用解决方案。

我不想使用cron job !!!

3 个答案:

答案 0 :(得分:1)

伪代码中的错误答案是

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(如果可用)或其他预先存在的任务调度系统依赖于未指定的平台。安排在特定时间发生的任务正是您需要做的,而这正是这些系统的目的。

答案 1 :(得分:0)

您可以安排在5分钟后运行的任务,如下所示......

在Windows上:

Adding tasks to Windows scheduler with PHP

在Linux上:

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

答案 2 :(得分:-1)

最佳方式您可以使用时间字段插入表单数据,这将保留插入时间的记录。在另一方面您创建一个META refresh 30 SEC的PHP文件,它将检查所有已成熟的记录5 Mintues并执行您想要做的事情并标记其状态已经执行了操作,因此不会选择这些记录。