我已經使用SendGrid官方PHP庫和SMTP API(自動郵件程序作爲Ubuntu服務器上的cron作業運行)構建了一個自動郵件應用程序。體面內存分析工具,用於php
在生產服務器上的內存限制設置爲32M,然而在生產服務器上的應用程序第一次運行的一個我得到的消息
用盡33554432個字節允許的內存大小,赤身試圖分配256478字節
這是毫無意義的,因爲256478 < 33554432,但我懷疑我有內存泄漏的地方。
根據to this post,PHP有內存泄漏問題,在處理對象之間的相互關係時,我使用我自己的Wrapper類來使代碼更易於讀取和構造,一個主要的mailService類以及每個任務的一個類,它實現一個接口,併爲每個電子郵件返回所有特定數據(標題,子值,收件人列表)。
我會先爲我的界面和每個類添加一個析構函數,以確保沒有內存泄漏,但我不確定這是否能解決問題,因爲根據內存基準測試我執行了大部分的執行時間,並且內存被SwiftMailer的MailTransport.php類所使用。
所以我的問題我基本上,我怎麼能重置每次每次迭代這一類的內存使用情況?有沒有內置的東西,或者我應該實現方法,這樣對我自己?
任何援助非常感謝。
小的可視化:
您是否建立了所有電子郵件收件人的列表?該coupld很容易成爲內存管理員,尤其是32M的低限制 –
那麼,每個特定的任務僅限於某些用戶,NotifyTokenExpiry僅適用於過去一個月內其令牌過期的用戶,TopScores僅用於主動排名用戶等等,並且在每次迭代結束時,我將unset()保存收件人列表的成員,並在之後爲它確定一個空值。 無論如何,你必須有一個體面的電子郵件超過32M的限制,我只測試了我的應用程序與低於500電子郵件地址 –