我使用 SendGrid 官方 PHP 库和 SMTP API 构建了一个自动邮件应用程序(自动邮件程序在 Ubuntu 服务器上作为 cron 作业运行)。
生产服务器上的内存限制设置为 32M,但在生产服务器上第一次运行应用程序时,我收到了消息
允许的内存大小 33554432 字节已用尽,试图分配 256478 字节
由于 256478 < 33554432,这完全没有意义,但我怀疑我在某处有内存泄漏。
根据这篇文章,PHP 存在内存泄漏问题,在处理对象之间的相互关系时,我使用我自己的 Wrapper 类,以使代码更具可读性和结构化,一个主 mailService 类,以及每个任务的一个类,即实现一个接口,并返回每封电子邮件的所有特定数据(标题、子值、收件人列表)。
我将从向我的接口和每个类添加一个析构函数开始,以确保没有内存泄漏,但我不确定这是否能解决问题,因为根据我执行的内存基准测试,大部分执行时间,内存被 SwiftMailer 的 MailTransport.php 类消耗。
所以我的问题基本上是,如何在每次迭代时重置这个类的内存使用量?,是否有内置的东西,或者我应该自己实现这样的方法?
非常感谢任何帮助。
小可视化: