PHP では DBMS を使うアプリばっかなわけ
ファイルベースでデータの読み書きを行うものを書いていて、こりゃ大変だなぁとつくづく思った。
- 変更がわずかしかなくてもそのわずかをファイルに書き出すのは考えるだけで面倒
- → 富豪的にガバっと丸ごと読み書きすることで対処
- いちいちロック処理から書くの面倒
- → 問答無用で1データファイル:1ロックファイルで自動的に処理するものを書いて、配列とファイル名だけで処理できるようにして対処
- ファイルが増えるとロックファイルが増えるけど気にしちゃダメってことに1
- PHP 4 は例外処理もなく、ちょこちょこと if を挟みながら書いていくのが超面倒
- そうだ、DBM を使えばある程度は面倒さが軽減されるかも?
- → PHP の DBM 関係の関数は貧弱すぎてとても使いものにならない。Pear を探しても DBM は相手にされてなさげ。
そうか、だから PHP は SQL系の DB を使うものばっかなのか、と今さらながらに納得。
しかしこの辺は Ruby を使うとずいぶん楽だなぁと感じた。IO オブジェクトにブロックを渡せばかなりすっきり書けるし、DBM もハッシュとほぼ同じように使えるので値の検索とか便利な機能が充実してる。いいなぁ。
書き込みの失敗を考えなければロックファイルは用意しなくてもいいんだけど、そうもいかないかなぁと思ってロックファイルを利用して、現在のデータをバックアップしてから書き込みを始めることにした。ディスクがパンクしてデータぶっ壊した経験があるので、ちょっとナーバス。粒度の大きなロックは自分で書け。 ↩