これは簡単に思えますが、私には理解できません。
file_get_contents('count.txt');
$variable_from_file++;
file_put_contents('count.txt', $variable_from_file);
データは 1 行だけでcount.txt
、ヒット カウンターです。これを行う方法はありますか?
これは簡単に思えますが、私には理解できません。
file_get_contents('count.txt');
$variable_from_file++;
file_put_contents('count.txt', $variable_from_file);
データは 1 行だけでcount.txt
、ヒット カウンターです。これを行う方法はありますか?
カウントされない増分がないことを確認したい場合 (CodeCaster が参照しているのは、スクリプトが count.txt を読み込んで増分し、別のファイルが同じことを行っている間にそれを保存してから、1 つの増分のみが行われる可能性があることです)。適切な 2 つではない)、使用する必要がありますfopen
。
$fp = fopen('count.txt', 'c+');
flock($fp, LOCK_EX);
$count = (int)fread($fp, filesize('count.txt'));
ftruncate($fp, 0);
fseek($fp, 0);
fwrite($fp, $count + 1);
flock($fp, LOCK_UN);
fclose($fp);
これにより、ファイルがロックされ、カウントがインクリメントされている間、他の人がそのファイルを読み書きできなくなります (つまり、他のユーザーは値をインクリメントする前に待機する必要があります)。
$variable_from_file = (int)file_get_contents('count.txt');
ただし、これはスレッドセーフではないことに注意してください。
あなたがしたのとまったく同じように、それはうまくいくはずです。からデータをキャプチャし、file_get_contents()
これらの機能の両方が成功したかどうかを確認するだけです。
$var = file_get_contents('count.txt');
if ($var === false) {
die('Some error message.');
}
$var++;
if (file_put_contents('count.txt', $var) === false) {
die('Some error message.');
}
これは私にとってはうまくいきますが
$count = intval(file_get_contents('count.txt'));
file_put_contents('count.txt', ++$count);
echo file_get_contents('count.txt');