在启动进程之前添加协同例程延迟

时间:2017-06-23 08:25:37

标签: php

假设我的网站管理区域有一个登录脚本,并假设每次有人登录时,都会向各个管理员电子邮件地址发送通知电子邮件,通知他们(就像WordPress似乎那样)。 / p>

现在,假设出于各种原因,我希望登录正常运行,但电子邮件通知将在稍后发送,例如2分钟后。

显然,PHP具有sleep功能,但这可以阻止所有页面处理;包括 - 在此示例情况下 - 用户登录将被“暂停”几分钟,登录将仅在睡眠时间到期并发送电子邮件后完成。

  • 有没有办法在PHP中实现这个(或类似的)协同例程执行延迟?
  

我怀疑没有,但认为值得问一下,但我怀疑PHP的结构意味着它无法处理只为共同例程而不是整个线程进程添加延迟。 < / p>

1 个答案:

答案 0 :(得分:0)

  

使用cron使脚本每X分钟执行一次,脚本只在不需要任何操作时退出。

- Álvaro González

因此,我设置了一个cron作业,每5分钟运行一次并检查数据库中的最近登录(在最后几分钟内),并在检测到时通过电子邮件发送相关的电子邮件地址。

缺点是这显然会每隔几分钟拨打一次MySQL电话。 (但我认为这种效率低下是非常可以忽视的)。