Julian: Besucherzähler

Hallo allesamt,

Ich will einen Besucherzähler mit php machen. Soweit kein Problem, schnapp ich mir eine Textdatei mit einer Zahl die bei jedem Homepagebesuch hochgezählt wird (sorry, ich glaub ihr wisst selber was ein besucherzähler ist *g*)
Jetzt zu meinem Problem:
Was passiert wenn 2 Personen gleichzeitig auf meine Seite zugreifen? Ich weiß das ich eine Datei mit "flock()" sperren kann um zu verhindern, dass 2 gleichzeitige Aufrufe meine Zählerdatei vermurksen, aber was passiert wenn ein php-script versucht auf eine gesperrte Datei zugreifen will?
vermutlich wird eine Fehlermeldung ausgespuck *heul*

lange Rede kurzer Sinn: ich weiß nicht wie ich einen Besucherzähler machen kann der bei 2 gleichzeitigen Seitenaufrufen nicht ins schwitzen kommt

mfg Julian

  1. echo $begrüßung;

    Mit der Funktion flock habe ich bisher mangels Notwendigkeit noch keine eigenem Erfahren gemacht. Deshalb kann ich dir nur (m)eine allgmeine Vorgehensweise aufzeigen.

    ... "flock()" ... aber was passiert wenn ein php-script auf eine gesperrte Datei zugreifen will?

    Was sagt denn das Handbuch zu flock()? Die User-Kommentare sollten bei der Lektüre nicht ausgelassen werden. Das eben gelernte wird nun in einem Test-Script ausprobiert.

    Das Beispielscript aus dem Handbuch scheint grundlegend für den Test geeignet zu sein. Vor oder nach dem fwrite() bekommt das Script jedoch noch eine künstliche Verzögerung mit sleep() eingebaut. Die sleep-Zeit muss ausreichen, das Script in einem zweiten Browserfenster erneut zu sarten. Beide Fenster sollten gleichzeitig zu sehen sein, damit man das Verhalten der Scripte vergleichen kann.

    vermutlich wird eine Fehlermeldung ausgespuck *heul*

    Nein, davon gehe ich nicht aus. Eine Fehler_meldung_ auszuwerfen würde ich als kontraproduktiv ansehen. Ein Programm muss in der Lage sein, den Sperrzustand ermitteln zu können, um im Sperrfall etwas definiertes ausführen zu können, z.B. warten auf die Freigabe.
    Ich nehme an, das zweite flock() bleibt solange "hängen", bis das erste Script die Sperre aufhebt.

    echo "$verabschiedung $name";

    1. Hallo dedlfix,

      Danke schonmal für die Tipps, werd mal nachgucken.

      Mit der Funktion flock habe ich bisher mangels Notwendigkeit noch keine eigenem Erfahren gemacht. Deshalb kann ich dir nur (m)eine allgmeine Vorgehensweise aufzeigen.

      Hast du Erfahrungen mit selbergebastelten Besucherzählern?

      Würde mich ausserdem interessieren wie ihr anderen das macht, denn um einfach eine fertige Lösung aus dem Web zu nehmen bin ich zu ergeizig ;-)

      mfg Julian

      1. puts "Hallo " + gets.chomp + "."

        ?> Julian
        => Hallo Julian.

        Würde mich ausserdem interessieren wie ihr anderen das macht, denn um einfach eine fertige Lösung aus dem Web zu nehmen bin ich zu ergeizig ;-)

        Gar nicht. Wozu Besucher zählen bzw. sie wissen lassen, dass sie Nummer x-und-x-sich sind?
        Wenn Infos erforderlich sind, gibt es die Serverlogs, welche zudem verlässlicher sind.

        Einen schönen Mittwoch noch.

        Gruß, Ashura

        --
        Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|
        30 Days to becoming an Opera8 Lover -- Day 20: search.ini
        Meine Browser: Opera 8.01 | Firefox 1.0.4 | Lynx 2.8.3 | Netscape 4.7 | IE 6.0
        [Deshalb frei! - Argumente pro freie Software]
      2. echo $begrüßung;

        Danke schonmal für die Tipps, werd mal nachgucken.

        Schau auch mal auf http://selfhtml.bitworks.de/ und dort besonders die "Experimentelle Sammlung von Flat-File-Funktionen", da kommt Filelocking zur Anwendung

        Hast du Erfahrungen mit selbergebastelten Besucherzählern?

        Nein, ich bevorzuge da ebenfalls die Serverlogs.

        echo "$verabschiedung $name";

  2. hi,

    Ich will einen Besucherzähler mit php machen. Soweit kein Problem, schnapp ich mir eine Textdatei mit einer Zahl die bei jedem Homepagebesuch hochgezählt wird (sorry, ich glaub ihr wisst selber was ein besucherzähler ist *g*)

    ja, unsinniger blödsinn.
    meist von leuten eingesetzt, deren seiten ansonsten "zu leer" wären ...

    Was passiert wenn 2 Personen gleichzeitig auf meine Seite zugreifen? Ich weiß das ich eine Datei mit "flock()" sperren kann um zu verhindern, dass 2 gleichzeitige Aufrufe meine Zählerdatei vermurksen, aber was passiert wenn ein php-script versucht auf eine gesperrte Datei zugreifen will?

    zum thema locking unter PHP hat Tom einen recht ausführlichen artikel verfasst: http://selfhtml.bitworks.de/artikel_locking/artikel/artikel.htm

    lange Rede kurzer Sinn: ich weiß nicht wie ich einen Besucherzähler machen kann der bei 2 gleichzeitigen Seitenaufrufen nicht ins schwitzen kommt

    schau dir erst mal den artikel an.

    den "fehler", wenn schon eine andere scriptinstanz die datei geöffnet/ge"lock"t hat, bekommst du beim öffnen bzw. beim versuch selber zu locken mit.

    meine idee wäre, dann mit sleep() einen kurzen timeout einzubauen, und es danach noch mal zu versuchen - dann dürfte die andere scriptinstanz ja mit ihren operationen auf der datei fertig sein.
    (ggf. auch mehrere versuche in einer schleife - aber natürlich nicht endlos viele.)

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  3. Hallo allesamt,

    Danke Euch allen!
    Ich werd jetzt vermutlich auch die Serverlogs benutzen.
    Die sind bei meinem neuen host nämlich garnicht schlecht wie ich frad gesehen hab.

    mfg Julian