0

私のWebアプリは、AJAXを介してPHPスクリプトに対して多くのPOSTおよびGET呼び出しを行います。PDF / Excelへのエクスポート、検索、挿入/更新/削除などの際にスクリプトを呼び出した後、サーバーのメモリ使用量がかなり低いレベルに達していることに気付きました。

私のPHPスクリプトはどれもexit()またはで終わっていませんdie()。これが私のメモリの問題を引き起こしている可能性がありますか?各スクリプトを追加しexit()たりdie()、各スクリプトの最後に追加したりすると、そのスクリプトで使用されていたメモリがクリアされますか?

4

3 に答える 3

3

exit基本的にdieはファイルの最後に到達するのと同じです。デストラクタが実行され、ob_startレベルがフラッシュされて終了し、シャットダウン機能が実行されます。

ただし、PHPプロセスが終了すると、他のプログラムと同じようにプロセスが終了します。メモリが残っていません。

于 2013-02-17T21:45:55.503 に答える
2

これはPHPの問題ではなく、Apacheの機能です。

apacheがリクエストを処理するための新しいプロセスを開始するとき、リクエストが処理された後すぐにリソースを破棄するのではなく、将来のリクエストに対応できるようになります。

'top'コマンドを使用すると、複数のapacheプロセスが実行されていることがわかります。

ここでそれについて読んでください: http://abdussamad.com/archives/169-Apache-optimization: -KeepAlive-On-or-Off.html

于 2013-02-17T21:49:34.283 に答える
1

私は何の違いも考えないかexit()、そうしないdie()でしょう。

データベースリソース(結果セット、接続など)を解放してください。さらに、使用するすべての拡張機能を検討し、特にエキゾチックな拡張機能を使用する場合は、メモリリークに関する既知のバグがないことを確認してください。

Linuxを使用していて、「空きメモリ」が「少ない」場合でもサーバーがディスク上でスワップしていない場合は、ディスクのキャッシュが原因である可能性があります。その場合、すべてが正常です。linuxatemyram.comを参照してください。
ところで、空きメモリに関する情報はどこで入手できますか?

于 2013-02-17T21:49:03.467 に答える