2009-07-18 14 views
0

単純に言えば、私はかなり新しいPHPコーダーです。コード内のパフォーマンスを改善するだけでなく、これらの厄介なメモリリークを防止する最善の方法について、私のホストは、APCなどがインストールされていないものの1つで、すべて手作業でコーディングする必要があります。-_-メモリリークを止めてパフォーマンスを向上させるためのベストプラクティス

答えて

2

通常のメモリリーク(オブジェクトや文字列を忘れるなど) PHPでは一般的ですが、一般的にリソースリークがあります。私は問題を持っていた:

  • データベース接続 - あなたは本当になど/ pg_close/mysql_closeを呼び出す必要があります。あなたは接続が完了したら。私はPHPの接続プーリングがこれを緩和すると思っていますが、それ自体で問題が発生する可能性があります。

  • イメージ - イメージを開くまたは作成するためにgd2拡張子を使用する場合は、image_destroyが必要です。そうしないと、メモリが永久に占有されるためです。また、画像はデータサイズの点で大きくなる傾向があります。

スクリプトは、純粋なCGI(なしHTTPサーバー・モジュール)を実行する場合、スクリプトが終了したときに、そのリソースを効率的にクリーンアップされることに注意してください。しかし、スクリプトのランタイム中にメモリの問題が残っている可能性があります。特に、1回のスクリプト実行で多くの操作を行うのは珍しいことではないイメージの場合です。

0

一般に、PHPスクリプトはメモリをリークできません。 PHPランタイムはスクリプトのすべてのメモリを管理します。スクリプト自体はメモリをリークする可能性がありますが、これはPHPプロセスが終了すると再利用されます。 phpは主にHTTPリクエストの処理に使用され、これらは一般的に非常に短時間で実行されるため、少しのメモリをリークしても問題ありません。したがって、http以外のタスクでphpを使用するとメモリリークだけが本当に懸念されるはずです。パフォーマンスは、メモリ使用量よりも大きな懸念事項になるはずです。コードをプロファイルするには、xdebugなどのツールを使用します。

+0

私はxdebugを使いたいと思っていますが、私のホストは余分なものがインストールされているとは言いませんでしたが、ありがとうございます:) –

+1

xdebugを運用環境にインストールしません。開発者マシンにインストールします。 – troelskn

+0

私は、スクリプトが終了した後にメモリが再利用されないというプロセスでリークを観察しています。もちろん、PHPは、おそらく責任を負うことになります。 –

関連する問題