こんにちは。先週(7月の話・・・w)はメモリリークメモリリーク!!って叫んでました。
PHPは基本単発で動作するから普段細かいこと気を使わなくなっていかんね。
$mdb2->disconnect();
$mdb2->free();
disconnect()の後はfree()しましょう、って結論。案外見落としがち。
いろいろなWebサイトの例とかにもfree()しているひと少ないし・・・。
しかも、Webアプリの場合その場限りでプロセス自体が完了するのでやらなくても
ぶっちゃけ関係ない。だから気がつかないってことなんだろうね。
反省反省。
経緯はPHPでデーモン的なものを作りたくて、はじめはsleepしてはexecでPHPスクリプトをを起動させて。
という風にしていたのですがこれだと起動コストがかかりすぎるので玄箱という限られたリソース
で動かすには厳しい仕様だと判明。
なので、execなんて使わないできちんとひとつのPHPスクリプトで書くことにした。
できたーと思ったのだが、しばらく動かしているとプロセスが死ぬ。
プロセスを確認してみると、利用メモリがどんどん増えていってびびった。
で、調べた結果、$mdb2->free();が必要ってことでした。
PHPでデーモン書くなよーっていう話はあるけれど、慣れている言語で書けるのは
開発スピードにもろ影響するからなぁ。最終的にどうしようもなければCとかでがりがり
作れる人にかいてもらう!誰もやってくれなければ自分で書く。そんな感じ。
Popular Posts:
- None Found