我正在尝试建立一个系统,在该系统中,用户以某种形式输入一些信息,然后将构造一封电子邮件,将该信息保存到mysql中。我试图弄清楚如何制作,以便例如在用户输入后20分钟发送电子邮件。 (没有用户停留在浏览器上)。
我需要这个延迟,因为我需要管理员能够登录页面以查看电子邮件并在发送之前对其进行编辑。通过cron工作可以做到这一点吗?我可以设置一个自动检查sql表的更新,然后在一定时间后发送电子邮件的设置吗?
或者可以通过睡眠功能延迟php脚本,然后发送电子邮件。当用户关闭网站并离开时,我可以使PHP脚本仍然运行吗?
您无法(轻松地)使PHP脚本存活这么长时间。
您最好的策略,IMO,是让PHP脚本创建电子邮件文件,并通知人员。
然后您可以让PHP运行一个shell脚本,该脚本使用“ at”程序来安排任务在20分钟内完成。 at是cron的表弟,但更适合此工作。
该计划任务将是接收电子邮件,将其移动到其他位置(例如“完成”目录),然后通过邮件将其传送。提示:/usr/sbin/sendmail -t < myEmailFile
在大多数Linux Boxen上均可使用。
您可以使用mySQL存储用户发送的数据。稍后将使用由cron作业触发的另一个脚本来访问此数据:如果您能够在控制面板中设置cron作业或通过访问服务器来进行操作,请继续使用cron选项卡语法定义何时触发该作业,此网站可能会帮助您:https://crontab-generator.org/
另一种方法是使用外部服务在每个时间间隔触发事件,该事件可能是通过HTTP访问cron作业脚本。
如果您希望在20分钟后准确发送电子邮件,请在mysql表中添加一个字段,指示所需的发送日期(注意时区)。您可能还想添加一个标志,指示是否发送了电子邮件,因此您不会重复发送同一封电子邮件。