flockについて
http://www.freespace.jp/phpstudy.php4
のサイト様を拝見したり、フリーで配布されているスクリプトを見ると、書き込むファイルに対して、
$fp = fopen('bbs.log', 'r+');
flock($fp, LOCK_EX);
…
とやっていると思うのですが、perl記述のcgiで掲示板を作成したときは、書き込むファイルとは別にロック用のファイルを用意し、(perl記述です)
open(LOCK,"+<$lockfile");
flock(LOCK,2);
open(IN,"$logfile");
....
close(IN,"$logfile");
open(OUT,"$logfile");
....
close(OUT,">$logfile");
としていました。(書き込むファイルが2つあったのでこのような方法をとってました)
そこでphpでも同じ方法は使えるのでしょうか?
$fp = fopen('bbs.log', 'r+');
flock($fp, LOCK_EX);
…
の方法を使おうと思っていたのですが、最初にログファイルを読み込むとき、
file("bbs.log");
という風にしているので、flockに記述すべきファイルハンドルが見当たりません。仮に取得できたとしても、file();の仕様からして内部にcloseが入ってそうなので、flockできたとしてもcloseで無効になってしまわないかが心配です。なのでこの場合はやはり別にログファイルを用意しないとできないということでしょうか。
お礼
何度も本当にありがとうございます。 わざわざすみません。 こちらのサーバでも試してみた所、 正常に書き込むことが出来ました! 設定等も済ませて早速実用化して行きたいと思います。 今回の件ではお世話になりました。 正直質問当初はこのスクリプトは諦めていたのですが、 貴方の助けのお陰で利用出来る形まで持って行く事が出来、 感謝の気持ちでいっぱいです。 本当に助かりました。ありがとうございました。