0
以下のコードでわかるように、私は他のクライアントがphpにアクセスするのを防ぐためにflockを使用しようとしています(実際には複数のユーザーが10私はここで検索したように...しかし、これは動作していません。私のdata.txtはこれを行うたびに空白になっています。PHP読み込み中にファイルをロックする - flock()は私のファイルを空白にします
<?php
$fileName = $_GET["room"]."/data.txt";
function replaceLine($data){
if (stristr($data, $_GET["player"])){
return $_GET["player"]." ".$_GET["data"]."\n";
}
return $data;
}
$file = fopen($fileName,"r");
if (flock($file, LOCK_EX)){
//ftruncate($file, 0);
///--------------
$data = file($fileName);
$data = array_map("replaceLine", $data);
file_put_contents($fileName, implode('', $data));
echo fread($file, filesize($fileName)+1);
///--------------
fflush($file);
flock($file, LOCK_UN);
} else {
echo "wait";
}
fclose($file);
?>
これは、(私が空のファイル作りを防止するために変更しようとしていたことを)元のコードである:(私が欲しいとそれが動作しますが、このファイルに問題がある...)
<?php
$fileName = $_GET["room"]."/data.txt";
function replaceLine($data){
if (stristr($data, $_GET["player"])){
return $_GET["player"]." ".$_GET["data"]."\n";
}
return $data;
}
$data = file($fileName);
$data = array_map("replaceLine", $data);
file_put_contents($fileName, implode('', $data));
$file = fopen($fileName,"r");
echo fread($file, filesize($fileName)+1);
fclose($file);
?>
この初心者の質問におかけして申し訳ありませんが、これを修正する方法がわからず、検索して何週間も別のことを試しています!ありがとう!
$データが空ではないことを確認しましたか? –