ScriptBasic講座
[ファイルをロックして最低限実用可能に]



1.最低限実用可能にする
前項で作ったアクセスカウンタには実際に使用する上で、大きな問題がありました。
それは、ファイルロックされていないという事です。




2.ファイルロックの必要性
アクセスカウンタを含むCGIプログラムは常に不特定多数の人によりアクセスされます。
誰がいつアクセスするかは予測できません。同時にアクセスされることもあるでしょう。
複数の人が同時にファイル書き込みをすると、ファイルが破損したりしてしまいます。
そこで登場するのがファイルロックです。

一度ファイルロックされると、ファイルロックを解除するまで他の人はファイルにアクセスできなくなります。

アクセス数の少ないサイトなら同時にアクセスするなんてことは滅多にないかもしれませんが、
ないとも言い切れません。アクセス数の多いサイトなら尚更危険です。
ファイルロックはアクセス数にかかわらず、CGIには必ず搭載することを推奨します。





3.ファイルロック対応に改造
さて、前項の最後に読み込み書き込みを一度のopen命令で行うプログラムを作りました。
実はあれはファイルロックを簡単に実現する為だったのです。

-ac4.bas-
#!/usr/bin/scriba

'ファイルを開く
open "acdata.txt" for random as 1

'ロック
LOCK #1,write

'変数countに読み込み
line input #1, count

count=count+1

'ファイルの現在位置
SEEK #1,0

'書き込み
print #1,count

'ロック解除
LOCK #1,release

close 1


'表示部分です
print "Content-Type: text/html; charset=euc-jp\n\n"
print "<html><body>"
print count
print "</body></html>"


追加したのはLOCK #1,writeLOCK #1,releaseだけです。
LOCK #1,writeでロックしLOCK #1,releaseでロックを解除しています

戻る

ウメ研究所