テキストモードはファイルロックの失敗やその他の厄介な問題を起こしやすいと言われています
実際には無効ではありませんが、書き込みが間違っています
locked_exでファイルを開いた場合。読み取りモードでは、空のコンテンツが読み取られます!!!
無判断で操作してから書き込むと、エラーが発生します....
ここで多くの問題が発生します。さらに何か追加します
ファイルが書き込みモードで開かれてから flock(..LOCK_EX) された場合、この時点でそれを開く別のプログラムがあり、さらに flock(LOCK_EX) した場合、これは間違いなく間違っています。2番目のfopenはファイルなので、サイズが0に切り捨てられている可能性があります..
$fd = fopen("./test.txt", "w");
flock($fd, LOCK_EX);
sleep(10);fwrite($ fd, "hightman");
flock($fd, LOCK_UN);fclose($fd);
?>
テストプログラム2. ::::: 2.php
$fd = fopen("./test.txt", "r");
echo fread($fd, 512);
fclose($fd);
?>
if ($fd = @fopen("./test.txt", "r+")) {
flock($fd, LOCK_EX);
fseek($fd) , 0, SEEK_END);
fwrite( $fd, "shit");
flock($fd, LOCK_UN);
‐ 1. php を実行する 2.php を実行する 2.php の出力結果は空です 2: 1.php を実行し、すぐに 3.php を実行します。1.php が完了するまで 3.php は終了しません。 ️ 「
だから書くときは特に注意してください
「w」、「r+」、「a」、「a+」はファイル長が0の時の状況に注意してください!ファイルは空であるか、フロックされている可能性があります