我有一些数据插入到数据库后表单提交。在它们被插入到数据库后,我需要将这些数据发送到电子邮件,但我必须等待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 SEC
的META refresh
,这将检查所有的记录已成熟的5 Mintues
时间和做你想做的,也标记的状态,已执行的行动,使这些记录不被再次选择。