我有一些关于PHP内存使用的问题。我将自己进行一些测试,但获得各种建议非常有帮助。
我最近了解了PHP函数ignore_user_abort(),它允许脚本在用户关闭页面时继续运行。我正在考虑将此用于我的电子邮件新闻稿工具而不是Cron作业,因为配置Cron作业有各种各样的小问题。使用户停留在页面上,使用AJAX请求以及在页面内容交付后运行部分脚本的替代方法都存在问题。
我的解决方案是在脚本开头运行调用ignore_user_abort(true),在生成内容后的最后,调用flush()以获得良好的度量,然后运行新闻稿脚本。或者,使用AJAX执行此操作。
首先,有没有人看到这种方法的问题?
其次,如果我使用没有设置时间限制的脚本,并且每个电子邮件都有一个while循环,如果我一次性完成,那么内存使用情况会怎样?由于我会覆盖变量,而不是使用新变量,我认为它会很低。
第三,因为如果我发送大量电子邮件,比如每次运行1000次,我不想让我的邮件服务器超载。通过我的cron作业,我每5分钟运行一次脚本,发送一批50封电子邮件。如果我在一次通过中这样做,我可以发送50封电子邮件,打电话给睡觉说5分钟,然后继续另外50封电子邮件?如果是这样,脚本内存使用情况如何在睡眠期间?这会是一种有效的方法吗?
我真正想要做的是想出一种创建新闻稿工具的方法,该工具不需要设置Cron作业的复杂(非技术人员)任务(甚至不是共享主机上的选项),并且不要求用户将浏览器保持在单个页面上打开。
欢迎任何想法建议或反馈。谢谢!
答案 0 :(得分:1)
在以前的工作中,我们为PHP中的一个关键功能编写了一个守护进程,不完全是你所描述的,但足够相似 - 当然还有循环和睡眠。我们非常怀疑它的长期稳定性 - 特别是在内存管理方面 - 所以我们对它进行了非常艰难的压力测试。结果非常好,代码投入生产并运行几个月甚至几年。
注意事项: