![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
掲示板のスクリプトを作っています。
ログは1行ごとに1記事分のデータが格納されているので、書き込み処理の場合は、
$lines = file("./log.dat");
としていったん配列にログを読み込み、
array_unshift($lines, $new_data);
等して、新しい記事のデータを配列の先頭に追加し、
$fp = fopen("./log.dat", "wb");
foreach ($lines as $line) {
fputs($fp, $_);
}
fclose($fp);
として、最終的にログに書き込みます。
Perlを扱っているときは(複数更新すべきログファイルがあったので)、別途ロックファイルを作ってそれに対してflockをかけるという方法を行っていましたが、今回はログファイルが1つであるのでそのログファイル自体にflockをかけようと思っています。
しかし、fileで最初にopenしているため、ファイルポインタが取得できず、flockをかけるタイミングは、本当の書き込み作業の部分(fopen)からかけるしかなさそうなのですが、これは危険ではないでしょうか?
それと、マニュアルに、
注意: flock()は、ファイルポインタを必要とするため、 (fopen()へ引数"w"または"w+"を指定して)書き込 みモードでオープンすることにより丸めるファイルにアクセス保護する 特別なロックファイルを使用する必要があるかもしれません。
とかいてありますが、この意味がいまいちわからず、困惑しています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelをCSV書き出す場合のシー...
-
C言語でのファイルのデータ更...
-
Monster'sの改造・・・ボスモン...
-
MATLAB グローバル変数の宣言
-
VBAで巨大なファイルの途中から...
-
エクセルVBA コードが同じでも...
-
ReadLineでの読み出し行を指定する
-
openした後、closeしないでプロ...
-
VBAでCSVファイルの特定行を書...
-
ファイル内の日付から1週間前...
-
CSV出力に関して
-
awkスクリプトでダブルクォーテ...
-
バッチファイルの作り方(CSV→...
-
dos変数の%~dp0は powershellで...
-
Perl 正規表現について
-
Perlで特定文字列から特定文字...
-
エクセルVBAで素数だけを出力す...
-
FindFirstFileとFindNextFileで...
-
readdir()で得られるファイル・...
-
window.open でのファイル指定方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelをCSV書き出す場合のシー...
-
VBAでCSVファイルを途中行まで...
-
VBAでCSVファイルの特定行を書...
-
エクセルVBA コードが同じでも...
-
VBAで巨大なファイルの途中から...
-
ReadLineでの読み出し行を指定する
-
openした後、closeしないでプロ...
-
Perlの変数に文字数制限(容量...
-
JavaでCSVファイルを高速に読む...
-
perlで、後ろの行を読んで、前...
-
perlにて2つのファイル比較
-
csvファイル改行コードの置換に...
-
Perlの質問:行と列を入れ替え...
-
VB6.0でDB接続する際に切断時の...
-
2つのCSVファイルをマッチング
-
cgiで表示するhtmlページ内でバ...
-
ADOによるCSVファイルからのデ...
-
Excelマクロでフォルダ内のCSV...
-
拡張子 ”log” と ” dat” の違い
-
perl内でPHPを動かす?
おすすめ情報