6月 20, 2011 0

Pear HTTP_Clientでメモリの大量消費を避けたい時

By in Diary

PHPのライブラリ群であるPearのHTTP_Clientを使って、とある自動巡回プログラムを書いていたところ、メモリ不足に陥り最後まで実行できない現象に遭遇しました。

プログラム終了時のエラーメッセージから、php.iniに定義されているmemory_limitの値を超えてしまうことで、不正終了することはわかっていたので、まずはメモリを消費してそうな部分の最適化をしてみることからはじめました。しかし、どうやっても修正できず….

仕方ないので、マニュアル見てみたところ、どうもHTTP_Client内部で履歴管理しているらしいことがわかりました。

HTTP_Client: enableHistory

さらにマニュアルには、enableHistoryメソッドを用い、履歴管理をOFFにする方法も掲載されていたので、マニュアル通りOFFにし、プログラムを実行してみたところ最後まで実行することができました。

わかってしまえば単純な話なんですが、何時間かはまってしまったので、メモとして残します。

Leave a Reply