Dus*_*tin 12 php sleep function
我有两个理由使用睡眠功能:首先,在他们联系我们20分钟后自动向客户发送确认电子邮件.我不想使用cron工作,因为我希望它完全是20分钟(而且我厌倦了我的网络服务器向我发送电子邮件告诉我他们发起了一个cron工作......每20分钟发一封新电子邮件! )
第二个原因:我听说有人使用睡眠功能发送大量电子邮件.由于我的服务器每小时只允许100封电子邮件,我想使用睡眠功能让脚本睡眠一小时,然后继续它拾取的地方.
我的问题是:它是否使用服务器资源?会减慢速度吗?使用睡眠功能还有其他问题吗?提前致谢!
Bil*_*eal 14
虽然进程正在进行sleep,但它不会消耗CPU时间,但进程的工作集仍然需要物理内存和/或页面文件来支持该进程.换句话说,PHP解释器进程需要继续运行.只要你的服务器有足够的RAM,这应该不是问题.
电子邮件发送时间变化很大,因此无论您做什么,都不会在20分钟内收到电子邮件到某人的收件箱.
我使用长期运行的后台脚本 - 从CLI启动,而不是apache - 来处理电子邮件发送.我的应用程序将电子邮件转储到队列表中,邮件程序脚本每15秒轮询一次.它在民意调查之间睡觉().这样,我只有一个脚本试图连接到SMTP服务器,然后睡觉.
应用程序的这一部分已成功运行,过去两年没有出现重大问题.唯一的烦恼是保持脚本运行 - 如果它因任何原因而失效,邮件就不会出来直到你重新启动它.但最坏的情况是,您可以定期通过cron重新启动它,例如每天.
如果我正在解决您的问题,我只需在队列表上放置一个"发送时间"列,并为这些电子邮件约会20分钟.然后邮件会SELECT * FROM mail_queue WHERE send_time <= NOW()
或者,您可以使用像beanstalkd这样的真实职位.我选择队列表只是为了保持我的应用程序堆栈简单.
| 归档时间: |
|
| 查看次数: |
9321 次 |
| 最近记录: |