-4

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

无论如何我可以等待5分钟,比如说睡眠功能。我不希望用户等待 5 分钟来执行脚本。

这就是我的想法:

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

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

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

4)如果有更多,那么让说 50 ids on hold 启动新流程并再次执行 3-4 的步骤。

这正是我的想法。

我不知道从哪里开始。

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

我不想使用 cron 作业!!!

4

3 回答 3

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

于 2013-05-01T10:30:24.760 回答
0

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

在 Windows 上:

使用 PHP 将任务添加到 Windows 调度程序

在 Linux 上:

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

于 2013-05-01T10:24:03.910 回答
-1

您可以使用时间字段插入表单数据的最佳方式,这将保留插入时间的记录。另一方面,您创建一个 PHP 文件,该文件将检查所有随着时间META refresh30 SEC 推移而成熟的记录,5 Mintues并执行您想要执行的操作,并标记已执行操作的状态,以便不再选择这些记录。

于 2013-05-01T10:32:10.517 回答