第21回 LOCAL PHP部 勉強会に行ってきました
最近、朝起きるにも理由が必要なくらい怠けているので、
PHPを勉強するには良い機会だと思い、勉強会に参加してきました。
内容は、
- 本番環境で使いたいPHP
- PHPのCopy On Write
- 学習テスト
でした。
本番環境で使いたいPHP
サーバーの面倒をみるスキルがないならレンタルサーバー
VPSの場合は、
低メモリ対策として監視ツールを導入する
PHPアクセラレータは、特に理由がない限りはAPCを使う
apc.statは通常1でいい(←後で調べる)
PHPのCopy On Write
こんな感じのコードを用意して、
<?php $tmp = array(); for ($i=0; $i<10000; $i++) { $tmp[] = $i; } $a = array( $tmp ); $before = memory_get_usage(); $b = $a; echo (memory_get_usage() - $before), "\n"; // この時点では、$b[0]に対して、$a[0]の複製は行われていない // 次の破壊的編集で、編集前の$a[0]を複製する処理が行われる array_shift( $a[0] ); echo (memory_get_usage() - $before), "\n"; ?>
出力結果を見ると、こんな感じになる。(*1)
336
1332104
値コピーじゃなくて、破壊的編集を行ったタイミングで、
必要に応じてメモリが確保されてコピーされるよ、ってお話でした。
つまり、メモリが足りなくて落ちた場合は、
その修正すべき箇所が落ちたところのコードとは限らないので、
デバッグ時にこういうの知ってるといいよ、っていう内容だった気がします・・・。
あと、値渡しと参照渡しを使い分けましょう、とのことでした!
学習テスト
この関数って戻り値なんだっけ?とか、
学習目的で書く書き捨てコードでもテストコードとして書いておけば、
テストを書く練習にもなるし、リファレンスにもなるし、
テストコードだからいつでも試せて良いよね、ってお話でした。
でも、PHP Unitを入れる敷居が、ちょっと高めな気がしました・・・。
感想
すごい勉強になったんだけど、
PHPの実行環境ってCentOS 5.xだと外部リポジトリをどーこーしなきゃで、
圧倒的なインフラスキルのなさに涙がこぼれそうになりました。
あと、手元にあったVM上のUbuntuにPHPが入ってなかったのはナイショです。
おしまい。
(*1) 実行環境は、PHP 5.3.10 with Suhosin-Patch @MacOS X 10.7.4
Leave a Comment