• ベストアンサー

【PHP】アクセス過多でファイル書き込み失敗時ならどうすれば?

PHP初心者です。現在ファイル書き込みについて勉強しています。 アクセスの多いサイトの場合、アクセスカウンターや書き込みなど、重なる場合一体どうするのでしょうか? 検索してみましたが意外とみつかりません。 単純に何度かリトライすればいいのか、それとも他に一般的な方法があるのか気になります。 PHPを理解してる方、常識的な方法をよろしくお願いいたします。 *使用レンタルサーバーはPHP4.4.4です。

質問者が選んだベストアンサー

  • ベストアンサー
  • magid
  • ベストアンサー率73% (49/67)
回答No.2

flock関数を使うのが一般的だと思います。 (というか、たぶんDBを使わない場合にはその方法しかありません。) ただしPHPのflock関数には排他制御したいファイルを直接flockするだけだと完全には排他制御できないようなので、きちんとロックしたい場合にはロック用ファイルを別途用意するなどの工夫が必要です。 参考になりそうなページを挙げておきます。 ■PHPオンラインマニュアル - flock関数 http://jp.php.net/manual/ja/function.flock.php ■PHP講座 関数とファイルロック http://www.sakura-pc.jp/php/02060000.shtml ■PHP:ファイルのロック方法(排他制御)の例 http://www.res-system.com/item/359

takosuke88
質問者

お礼

http://www.sakura-pc.jp/php/02060000.shtml ↑ これはいいですね!まさにこんなものを探していました。 ダミーディレクトリをフラグ代わりに使うとは。 LOCK_EXはLOCK_UNの前にトラブルがあると誰も書き込みできない最悪の事態が発生する… これも知りませんでした。 ところで http://www.sakura-pc.jp/php/02060000.shtml の方法はプロの方の間ではどれくらい一般的なんでしょうか? 定番なのかマニアックなのか知りたいです。 またまたよろしくお願いいたします。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • magid
  • ベストアンサー率73% (49/67)
回答No.3

ごく一般的な方法だと思います。 ただし業務でPHPを使う人は、ファイルを使わずにDBを使うだろうと思います。

takosuke88
質問者

お礼

なるほどやっぱ行き着くところはそっちですか! だんだん常識がわかってきました。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • galluda
  • ベストアンサー率35% (440/1242)
回答No.1

がると申します。 そういうときは「ロック」という手法が一般的です。 Googleあたりで、「ファイルロック」「排他処理」または「楽観的ロック」あたりのキーワードで調べてみてください(悲観的ロックは多分普通の方なら必要ないだろうなぁと思ったので外してますが、興味があったら調べてみてください)。 で、わからないところなどあったらまたご質問いただければ ^^

takosuke88
質問者

お礼

楽観・悲観というのは知りませんでした。 とりあえず排他ロックが基本と思っていましたが・・

すると、全ての回答が全文表示されます。

関連するQ&A