4

カウンターを作ろうとしています。つまり、XHTMLrequest を使用し、この PHP を実行するだけのボタンです。

私の質問は、カウント コードがテキスト ドキュメントの値を number に変更する理由です1。たとえば24、値を に変更すると、1 を追加して値を に変更する代わりに、値が数値に25変更されます1

<?php

$fp = false;
// Open file for reading, then writing
while ( ($fp=fopen('clicks.txt','r+'))===false ) {
    usleep(250000); // Delay 1/4 second
}
// Obtain lock
while ( !flock($fp, LOCK_EX) ) {    
    usleep(250000); // Delay 1/4 second
}
// Read Clicks
$clicks = trim(fread($fp,1024));
// Add click
$clicks++;
// Empty file
ftruncate($fp,0);
// Write clicks
fwrite($fp, $clicks);
// Release Lock
flock($fp, LOCK_UN);
// Release handle
fclose($fp);

?>
4

3 に答える 3

2

これは、ファイルから情報を読み取るときに文字列であり、1 を追加する前に整数に変換する必要があるためです。

変化する:

$clicks = trim(fread($fp,1024));

$clicks = intval(trim(fread($fp,1024)));
于 2012-06-24T22:22:19.790 に答える
1

に置き換え$clicks++;ます$clicks = $clicks + 1;

于 2012-06-24T23:39:46.470 に答える
1

私はあなたに気づきますftruncaterewind、ファイルには気付きません。ポインターは最後に読み取った場所にとどまり、切り捨てるとファイルは 0 になりますが、ポインターは同じままです。

PHPドキュメントを引用:

<?php
$filename = 'lorem_ipsum.txt';

$handle = fopen($filename, 'r+');
ftruncate($handle, rand(1, filesize($filename)));
rewind($handle);
echo fread($handle, filesize($filename));
fclose($handle);
?>

PHP の例では、ファイルも巻き戻されることに注意してください。

于 2012-06-24T22:29:19.423 に答える