0

SendGrid の公式 PHP ライブラリと SMTP API を使用して自動メーラー アプリケーションを作成しました (自動メーラーは Ubuntu サーバーで cron ジョブとして実行されます)。

実稼働サーバーのメモリ制限は 32M に設定されていますが、実稼働サーバーでアプリケーションを最初に実行したときにメッセージが表示されました

33554432 バイトの許容メモリ サイズを使い果たしました。256478 バイトを割り当てようとして無駄でした

256478 < 33554432 であるため、これはまったく意味がありませんが、どこかでメモリ リークが発生していると思われます。

この投稿によると、PHP にはメモリ リークの問題があります。オブジェクト間の相互関係を処理する場合、コードをより読みやすく構造化するために、独自の Wrapper クラス、メインの mailService クラス、および各タスクごとのクラスを使用しています。インターフェイスを実装し、各電子メールごとにすべての特定のデータ (ヘッダー、サブ値、受信者リスト) を返します。

メモリリークがないことを確認するために、インターフェイスと各クラスにデストラクタを追加することから始めますが、これで問題が解決するかどうかはわかりません。実行したメモリベンチマークによると、ほとんどの実行時間と、メモリは SwiftMailer の MailTransport.php クラスによって消費されます。

だから私の質問は、基本的に、各反復ごとにこのクラスのメモリ使用量をリセットするにはどうすればよいですか?、何かが組み込まれていますか、それとも自分でメソッドを実装する必要がありますか?.

どんな援助も大歓迎です。

小さな視覚化:ここに画像の説明を入力

4

2 に答える 2

0

PHP には 5.3 以降のガベージ コレクション機能があり、特定の状況に役立つかどうかを試すことができます。この他のSOの質問も参照してください

于 2013-05-22T14:49:05.387 に答える