christoph: Counter bei gleichzeitigem Zugriff ?

Hallo,

habe mir einen einfachen Counter gebaut, den ich dann mit einer IP-Sperre verbinde. Nur stellt sich bei mir jetzt die Frage:
Was passiert, wenn mehrere User meine Seite öffnen und mit der count.txt Datei arbeiten? (was bei ca. 500 Besuchern pro Tag keine Unmöglichkeit ist) Habe die Datei immer Locken lassen!

$fcount = "daten/counter/count.txt";
if (!file_exists($fcount)) { fopen($fcount, "a"); }
$count = fopen ($fcount, "r+");
flock ($count, LOCK_EX);
$abruf = fgets($count,10);
$abruf = $abruf+1;
rewind ($count);
fputs ($count, $abruf);
flock ($count, LOCK_UN);
fclose($count);

danke

  1. Hi!

    So wie ich das bei dir lese bekommen alle weiteren User, die zur gleichen Zeit auf die Datei zugreifen wollen, einen Fehler bei fopen - so in etwa "Datei konnte nicht geöffnet werden".

    cu

    Marc Reichelt || http://www.step2identity.com/

    --
    Linux is like a wigwam - no windows, no gates and an Apache inside!!!
    1. Hi,

      und was kann ich dagegen tun, dass jeder registriert wird. Und kein Fehler gibt.

      danke

      1. Hi,

        und was kann ich dagegen tun, dass jeder registriert wird. Und kein Fehler gibt.

        nutze doch eine Datenbank, wenn es geht.

        Gruß
        Reiner

        1. Hi,

          habe zwar eine mysql Datenbank aber null Ahnung wies geht und morgen sollte meine Seite komplett fertig sein!

          mfg chris

          1. Hallo Chris

            habe zwar eine mysql Datenbank aber null Ahnung wies geht und morgen sollte meine Seite komplett fertig sein!

            Dann hast du wahrscheinlich Pech gehabt, es sei denn, du lernst bis morgen wie MySQL in Verbindung mit PHP funktioniert oder du findest jemand, der dir bis morgen eine entsprechende Lösung entwickelt, was dann wohl teuer wird.

            Schöne Grüße

            Johannes

            --
            ss:| zu:) ls:[ fo:) de:] va:) ch:] sh:( n4:& rl:( br:^ js:| ie:{ fl:( mo:|
            Selfcode? http://emmanuel.dammerer.at/selfcode.html
            1. Hi!

              Es bleibt noch eine letzte (und gute) Möglichkeit:

              Du erstellst eine Schleife, die fopen so_und_so_viel Mal ausführt, solange fopen den Wert false hat.
              Quasi so:

              while( ($fn = @fopen("datei.txt","r")) == false)
              {
              }
              // Datei ist jetzt offen

              Achtung: das angegebene Skript probiert unendlich Mal, die Datei zu öffnen!

              cu

              Marc Reichelt || http://www.step2identity.com/

              --
              Linux is like a wigwam - no windows, no gates and an Apache inside!!!
              SELFCode: ss:| zu:) ls:[ fo:) de:[ va:) ch:? sh:) n4:& rl:? br:^ js:( ie:% fl:| mo:)
              http://emmanuel.dammerer.at/selfcode.html