LESSON8 恐怖のデータ消失事件のまっき

ああ、どーしよーーーーー・・。
あら、どうしたのシジオ君?悩んでいる姿なんてシジオ君らしくないわよ。
あ!おねえさん!今までどこに行ってたの!?
いや、来るの面倒臭くて・・。
サボってたのかよ!!
寂しかった?
・・・いや寂しかったって言うか、なんちゅうーか。
ガキのくせに何照れてんだ。
それがおねえさんの言う台詞か!!!
まあいいじゃないか。個性を認め合おうぜっ。
あ、そう言えば今日はジミーがいないなぁ。
ああ、あのリーゼントの男なら始末しといたよ。
え!マジ!!?
・・えーっと、そう言えば今日の授業はどこからかな?
つーか答えてくれ!!!
呼ばれてはみ出てニャニャニャニャーン!
・・・・呼んでないし。
ぴーかちゅーぴーかぴーか♪
・・いや、それはあり得ないでしょう。
ニャンチュウ、どうせまた可愛いメス猫ちゃんのケツでもおっかけ回してたんでしょ♪
ニャンチュウはそんなことしないニャン。
(・・・ってか、おっさんなんだけど)。
シジオ、ニャンか言ったかニャロメ?
いえ・・何も。
そう言えばシジオ君、何かさっき悩んでいたみたいだったけど。
は!そうだ!!
何の悩みニャリン?
落ちこまなくても・・またそのうちいい人出来るわよ。
女の悩みじゃねーーーーー!!!
金なら貸さんぞ。
掲示板の記事が消えちゃったんだよーー!
・・・・そうなんだ。
・・・・それって痛いよね。
そんなリアクションかよ!
・・・・いや、ほらそれって本人じゃないと分からない事だし。
・・・・そうだよね。下手に気持ち分かるとか言っても嘘になるしね。
・・・・そうよね。それって嫌だよね。本人傷付くだけだもんね。
・・・・あなたたちの会話意味わかんないんすけど。
・・・・は?
これってCGI SCHOOLでしょ?
当たり前だろ。
だったら解決策教えてよ!
ああそういう事か。
いやマジでお願いしますよ!
バックアップ取らなかったの?
バックアップ?
要するに記事のデータが入ったファイルをダウンロードしてコピーをパソコンのハードディスクに取って置く事よ。
・・取ってません。
・・じゃあ駄目だね。
ええええ!!駄目って・・もう戻らないの!?
・・そうね、残念だけど。
・・うう、ショック。
気持ちは良く分かるニャン♪
・・絶対分かってないと思う。
バックアップは大事よ。特に大事なデータはね。これはCGIに限った事ではないけど。
・・うん、そうなんだけど。消えると思わなかったし。
おねえさんも前もって言っておけば良かったわね。
・・その笑顔で言われても。
・・これしか顔イメージ用意されてないんだけど。
・・そうだったね。ここの作者、手抜きが多いからね。
まあそれより、せめて投稿データのバックアップだけでもしておけば良かったわね。
どれが投稿データなの?
大概配布先の説明ページにどれがどれって書いてあるからそれを読んでおくと良いわね。
そっかぁ・・・。今度から読んでおくよ。
全然読んで無さそうだな・・・。
でもデータが消える事ってどうしてそういう事が起こるの?
例えば誰かがシジオ君の掲示板に書きこみをするとするわね。
うん。
そうするとCGIが書き込んだデータをファイルに保存するんだけど、その時一瞬データを空にするのね。
え?どういうこと?
そうね。つまりこういうことね。ファイルにデータを保存する時は一旦ファイルにあるデータを読み込んで自分のデータを追加してから、前のデータを削除して新しくデータを保存し直しているのよ。そういう風にしてデータを保存しているの。だから前のデータを削除したその時に一瞬だけど空の瞬間が出来るわけ。
ふんふん。それで?
例えばAさんが書き込んでいる時にBさんも同時に書き込んだとしたらどうなると思う?
え?どうなるの?
さっきも言ったけど、データを保存するときに一旦ファイルのデータを読み込んでそのデータに自分の分を追加するって言ったでしょ?
うん。
このデータを読み込む時が一番危険なの。もしこの一瞬の間にファイルが空になっていたら・・・・。
ギャアアアアアア!!
意味分かった?
分かりません・・・。
Bさんは空になったデータを読み込んでそこに自分の分を追加してからデータをファイルに保存するから結局1件しか記事が無い事になってしまうの。
・・・そういうことだったのか!
これがデータが消える仕組みよ。
でもそんな一瞬の事が良くある事なの・・・?二人同時に書きこむなんて・・。
滅多に無いとも言えるし良くあるとも言えるわね。そのCGIのプログラムやユーザー側の環境も関係あるわね。
環境?設置している人のサーバの事?
そうね。利用者が多いホームページだとどうしてもそういう機会も多くなるだろうし、重いサーバだと書きこみ処理に時間が掛かったりして一瞬が一瞬で無くなったりするのよ。もちろんアクセスが集中する時間帯は特に危険ね。
そっかぁ。でも僕のホームページ、そんなに利用者いないんだけどなぁ。
まあ一番の原因はそのサーバがどのくらい重いかって事よね。
後はデータが消えやすいCGIと消えにくいCGIがあるわ。
へえ・・そうなの?
ファイルロック機能が無いCGIや、データを1ヶ所に保存しているCGIや頻繁にデータを読み込むCGIはデータが破損しやすいわね。
ファイルロックって何?
先ほどの例のようにAさんとBさんが同時に書きこみをしようとするとデータが破損しやすくなる訳だからそれを出来ないようにする機能よ。Aさんが書き込んでいる間はファイルにロックを掛けてBさんは待ち状態になり、Aさんが書きこみを終えたらBさんの書きこみを処理するのよ。
へえ、そんな機能があるんだね。
ファイルロックには何種類かあって、flockを使うロックが一番強固だと言われているんだけど、flockは使えない環境が多いから、代わりにsymlinkやmkdirを使う場合が多いわ。
意味分からない・・・。
そうね。ちょっと難しいわね。CGIによってはロックを何種類かの中から選べるようになっているものもあるから、自分の環境で動作するものを選ぶといいわ。
うん、そうするよ。
でもこのファイルロックも完璧じゃないのよ。
え?そうなの?
全く同時にアクセスされると防ぐ事が出来ないの。だからまめなバックアップがどうしても必要なのよ。
・・・そっか。気を付けるよ。
zzzzzzzzzz ずず・・う、よだれが出ちまったい。

おしまい


Copyright 2000-2003 Missing Link All Rights Reserved.