トップ > サポート > 設置ガイド > ファイルロックについて

〜 同時アクセスによるデータファイル破損を防止するファイルロック機能の設定について 〜

(ダウンロードページから移動されてきた方は、「前のページへ」で続きをご覧いただけます。)
■ファイルロックとは?

掲示板などのCGIスクリプトは、複数の訪問者がまったく同時にアクセスする性質を持っています。例えば、掲示板CGIスクリプトで、「Aさん」という人と、「Bさん」という人とが、まったく同時に掲示板へ書込みをした場合に、掲示板の記録データが壊れてしまう場合があります。

このような問題を防ぐためには、「Aさん」という人が掲示板へ書込みをしている間、「Bさん」のアクセスを一時的に待ってもらう仕組みが必要です。このような仕組みを使い、記録データが壊れるのを防ぐ処理がファイルロックの役割です。
■ファイルロック方法について

一般に、「flock関数によるファイルロック」と「mkdir関数によるファイルロック」のどちらかが使われていますが、現在一般的で信頼性が高いのは、flock関数によるファイルロックです。

当サイトでは、flock関数によるファイルロックを推奨していますが、一部のサーバではflock関数が使えない場合があります。この場合にはmkdir関数によるファイルロックを使ってください。不明な場合には、サーバ管理者へ問い合わせてください。

なお、flock関数によるファイルロックと、mkdir関数によるファイルロックは次の様な違いがあります。

flock関数によるファイルロックの特徴

ファイルロック処理が早い
信頼性が高い
共有ロックによる効率の良い処理もできる
ごく一部のサーバでは機能しない

mkdir関数によるファイルロックの特徴

ファイルロック処理が遅い
ある程度の信頼性がある
一時的にロックされた状態が続いてしまう場合がある(混雑状態が続いてしまう場合がある)
どんなサーバでも機能する
■ファイルロックの設定が分からない場合は?

できればflock関数が望ましいのですが、不明な場合には、mkdir関数によるファイルロックを設定してください。
■ファイルロックの設定が分からない場合は?

サーバ管理者へ問い合わせていただくか、または当サイトで配布している「flock検査」を使って調べることもできます。
flock関数が使えるサーバでは、次の様に表示されます。
■flock関数実行検査結果
◎このサーバは、flock関数が使えます。


■flock関数の引数検査結果
◎flock関数引数の検査に成功しました。

このサーバで有効なflock関数の引数
引数の名前引数の値説明
LOCK_SH1共有ロック
LOCK_EX2排他ロック
LOCK_NB4非ブロック
LOCK_UN8アンロック






(ダウンロードページから移動されてきた方は、「前のページへ」で続きをご覧いただけます。)