0

次の基本的な PHP を使用しています。

<?php

    if (file_exists('count_file.txt')) 
    {
        $fil = fopen('count_file.txt', r);
        $dat = fread($fil, filesize('count_file.txt')); 
        echo $dat+1;
        fclose($fil);
        $fil = fopen('count_file.txt', w);
        fwrite($fil, $dat+1);
    }

    else
    {
        $fil = fopen('count_file.txt', w);
        fwrite($fil, 1);
        echo '1';
        fclose($fil);
    }
?>

ヒットカウンターとして(私はむしろ持っていませんが、私たちは持っていると主張しています)。txtファイルはヒットの数を保持し、機能します...ただし、カウンターはランダムに(数週間後、場合によっては数か月後)トリップして、たとえば4300から11に低下することを決定します。うるさくなってきた??

4

2 に答える 2

1

filesize関数は、ファイルのバイト数を示します。PHP.netは、関数がどのように機能するかを記述できます。その関数を使用する代わりに、ファイルから行(fgets)を読み取り(その行にはヒットカウントが含まれている必要があります)、ヒットカウントに1を追加してから、再保存する必要があります。

例えを挙げましょう。あなたは台所にいて、ブルーベリーの容器を引き出し、ブルーベリーがいくつあるか知りたいのですが、代わりに、容器の長さを何インチか尋ねます。次に、すべてのブルーベリーを取り除き、インチ数+1ブルーベリーをコンテナに入れます。それについては何も意味がありませんが、それはあなたのスクリプトが行うことです。次の行を変更した場合:$ dat = fread($ fil、filesize('count_file.txt')); TO $ dat = fgets($ fil); ブルーベリーの数を読み、その数に1つ追加して、再保存する必要があります。

于 2012-07-12T12:25:07.813 に答える
1

ロックを使用していません。2 つ以上のリクエストが同時にサーバーにヒットすると、互いのファイル操作を踏みにじることになります。この種のことは、データベースで行う方が適切です。

于 2012-07-12T12:22:03.567 に答える