CGI-BBS > CGI > Perl > ロック処理について


カレッヂ
カレッヂ


質問者 shin  投稿日 4/23(火) 01:18:23
よろしくお願いします
smlink関数とmkdir関数の機能の違いがわかりません
blackbookを参照しているのですが
smlink関数については記載されていません
出来ればそれぞれの長所短所などを
教えていただけるとありがたいです

又flookはあまり使われないそうなんですが
なにかデメリットがあるのでしょうか
回答者 今夜はやすだ  [削除]  投稿日 4/23(火) 02:56:04
smlinkでなくsymlinkだと思います。
で、symlinkとは、ただ単にlink -sと同じくシンボリックリンクをはる関数なんです。
mkdirは、make directoryですよね。
長所短所は、mkdirより、symlinkの方がリンク先の名前と同様の少量用のbyteで作成できるので、容量の面ではいいと思います。しかし、たまーに、シンボリックリンクを貼れないOSなどの理由で、mkdirやロックファイル(symlinkでない)にするしかない場合もあります。

flockは、OS(Win95/98/Me)によって使用不可能な可能性もあり、ファイルシステム(NFS)によって不可能な場合もあったりします。
回答者 しあわせのツボ  [削除]  投稿日 4/23(火) 11:54:14
基本的なところで勘違いしているといけないので補足を。
挙がっている関数のうち、排他制御のための関数はflockだけです。
symlinkやmkdir自体が排他制御の機能を持つわけではなく、自前で制御を実装するにあたり、それらの働きを利用しているだけです。

ではなぜ本来のflockがあまり使われないかと言うと、環境により使えない場合も多い(ので広く配布するスクリプトにはあまり使いたくない。その結果、本当は使われているかもしれないけどあまりお目にかからない)こともありますが、もっと重大な問題があります。
実はflockによるロックはあまり頑丈でなく、自前でロック機構を作った方が信頼性が高いのです。なのでスクリプト作成者はflockを使わず、いかに壊れないロジックを構築するかに腐心する訳です。

よそのサイトですが参考:
http://north.ug.to/columns/cgi_lec/cgi03.html

蛇足:それでも絶対に壊れない訳ではないので(スクリプトが正常でもディスクがクラッシュする可能性はあります)、バックアップも併用するのが最も確実です。
質問者 shin  [削除]  投稿日 4/23(火) 17:49:17
丁寧な解答ありがとうございます

このページは終了したので返信(回答)は書きこめません

Web裏技