Frank: Zugriffszähler

Hallo zusammen !
Ich möchte auf meiner Homepage gern einen Gästezähler einbauen, den ich mit Perl programmieren möchte. Das Problem ist, daß ich nicht weiß wie ich die generierte Zahl in meine html-Startseite importiere.
Eine Möglichkeit wäre die ganze Seite durch eine Perl-Datei generieren zu lassen. Das möchte ich aber nicht. Ich möchte daß die Seite eine "normale" *.htm Seite ist, und an einer Stelle soll die aktuelle Besucherzahl stehen und die soll eben von einem PERL-Skript generiert worden sein:und zwar als Text und nicht als Grafik, wie bei den herkömmlichen Zugriffszählern. Kann mir jemand auf die Sprünge helfen ?
Vielen Dank
Frank
(oh, das reimt sich  8-)    )

  1. Hi Frank

    Das funktioniert mit SSI. Du hast dann in Deiner "normalen" HTML Seite an der Stelle wo Du die Textausgabe willst einen Befehls-Aufruf Deines Scriptes.

    Irgendwie in der Art:

    <!--#exec cgi="/cgi-bin/counter.pl"-->

    Dann musst Du aber Dein HTML Dokument mit der Endung *.shtm, oder *.shtml speichern, ansonsten funktioniert der Aufruf nicht.

    Selbstverständlich gäbe es auch bereits einige Text-Counter frei erhältlich und Du müsstest Dir nicht die Mühe machen einen selbst zu programmieren!

    http://www.worldwidemart.com/scripts/

    cheers
    kaepten

    1. Danke für die Hilfe !
      Ich weiß, ich kann mir auch n Counter woanders "bestellen", aber ich machs lieber selbst, wo ich doch gerade dabei bin mir Perl ein bisschen beizubringen ! Danke also nochmals !
      Frank
      http://www.frankswelt.de

      Hi Frank

      Das funktioniert mit SSI. Du hast dann in Deiner "normalen" HTML Seite an der Stelle wo Du die Textausgabe willst einen Befehls-Aufruf Deines Scriptes.

      Irgendwie in der Art:

      <!--#exec cgi="/cgi-bin/counter.pl"-->

      Dann musst Du aber Dein HTML Dokument mit der Endung *.shtm, oder *.shtml speichern, ansonsten funktioniert der Aufruf nicht.

      Selbstverständlich gäbe es auch bereits einige Text-Counter frei erhältlich und Du müsstest Dir nicht die Mühe machen einen selbst zu programmieren!

      http://www.worldwidemart.com/scripts/

      cheers
      kaepten

      1. Danke für die Hilfe !
        Ich weiß, ich kann mir auch n Counter woanders "bestellen", aber ich machs lieber selbst, wo ich doch gerade dabei bin mir Perl ein bisschen beizubringen ! Danke also nochmals !

        Viel Spaß beim Synchronisieren paralleler Schreibzugriffe - ich halte einen (funktionierenden) Zähler für keine Kleinigkeit und für ein ziemlich anspruchsvolles Erstlingsprojekt in Perl. Bedenke, daß daran auch das Posting-Skript unseres Forums krankt ...

        1. Danke für die Hilfe !
          Ich weiß, ich kann mir auch n Counter woanders "bestellen", aber ich machs lieber selbst, wo ich doch gerade dabei bin mir Perl ein bisschen beizubringen ! Danke also nochmals !

          Viel Spaß beim Synchronisieren paralleler Schreibzugriffe - ich halte einen (funktionierenden) Zähler für keine Kleinigkeit und für ein ziemlich anspruchsvolles Erstlingsprojekt in Perl. Bedenke, daß daran auch das Posting-Skript unseres Forums krankt ...

          Müßte es nicht! Dafür gibt es flock.
          Oder noch besser, eine selbstentwickelte Version, die gleichzeitiges Speichern verhindert (kurze Schleife).
          Bei einem Zähler ist sowas aber nicht unbedingt empfehlenswert!

          Reiner

          1. Müßte es nicht! Dafür gibt es flock.
            Oder noch besser, eine selbstentwickelte Version, die gleichzeitiges Speichern verhindert (kurze Schleife).

            Eben genau das funktioniert nicht ohne unteilbaren Semaphor-Befehl.

            Bei einem Zähler ist sowas aber nicht unbedingt empfehlenswert!

            Willst Du ihn lieber ruiniert haben, wenn zufällig mal zwei Leute gleichzeitig reinschreiben? Dann sind die Erkenntnisse von Monaten weg.

            1. Hallo Michael,

              Müßte es nicht! Dafür gibt es flock.
              Oder noch besser, eine selbstentwickelte Version, die gleichzeitiges Speichern verhindert (kurze Schleife).

              Eben genau das funktioniert nicht ohne unteilbaren Semaphor-Befehl.

              Erläuter das bitte mal!

              Bei einem Zähler ist sowas aber nicht unbedingt empfehlenswert!

              Willst Du ihn lieber ruiniert haben, wenn zufällig mal zwei Leute gleichzeitig reinschreiben? Dann sind die Erkenntnisse von Monaten weg.

              Nein! Ich meinte, man macht auch ein Lock, aber wartet nicht, falls gelockt ist, damit kein Zeitverzug stattfindet. Zähler sind Statistik, es ist im Grunde egal, ob man 100% der User bekommt (geht wegen Proxy-Problematik sowieso kaum).

              Reiner

              1. Hm, klingt ja heftig ! Vielleicht sollte ich mir doch einen Counter downloaden. Von dem was Ihr hier gerade erzählt habt, habe ich circa nichts verstanden 8-(
                Naja, wenigstens mein Guestbook habe ich selbst !
                hinbekommen !
                So long,
                Frank

                Hallo Michael,

                Müßte es nicht! Dafür gibt es flock.
                Oder noch besser, eine selbstentwickelte Version, die gleichzeitiges Speichern verhindert (kurze Schleife).

                Eben genau das funktioniert nicht ohne unteilbaren Semaphor-Befehl.

                Erläuter das bitte mal!

                Bei einem Zähler ist sowas aber nicht unbedingt empfehlenswert!

                Willst Du ihn lieber ruiniert haben, wenn zufällig mal zwei Leute gleichzeitig reinschreiben? Dann sind die Erkenntnisse von Monaten weg.

                Nein! Ich meinte, man macht auch ein Lock, aber wartet nicht, falls gelockt ist, damit kein Zeitverzug stattfindet. Zähler sind Statistik, es ist im Grunde egal, ob man 100% der User bekommt (geht wegen Proxy-Problematik sowieso kaum).

                Reiner

              2. Eben genau das funktioniert nicht ohne unteilbaren Semaphor-Befehl.
                Erläuter das bitte mal!

                <../../sfarchiv/1999_4/t07970.htm#a40113>,
                <../../sfarchiv/1999_2/t04506.htm#a22328>

      2. Moin, moin,

        ein Möglichkeit zur Lösung des Problems:

        ein primitiver Text-Counter ohne SSI
        drei Zeilen für's HTML-Dokument:
        <body ....>
        <script language="JavaScript" src="counter.js" type="text/javascript">
        </script>

        Die externe JavaScript-Datei wird vom Perl-Script erzeugt und blendet den Counterwert ein.

        ...

        <img src="http://www.server.com/cgi-bin/counter.cgi" border="0" heiht="1" width="1">

        ruft das Perl-Script auf, dies erzeugt die externe JS-Datei und gibt als Rückgabewert eine 1x1 Pixel Gif-Datei zurück

        #####################################################
        #!/usr/bin/perl

        $LOCK_EX = 2;
        $LOCK_UN = 8;

        $counter_js = "/home/www/index/counter.js";

        open(COUNT,"$counter_js");
        $counter = <COUNT>;
        close (COUNT);

        open(COUNT_JS,">$counter_js");
        flock (COUNT_JS, $LOCK_EX) or die ("$!: can‚t get lock\n");
        $counter =~ s/[^0-9]//g;
        $counter++;
        print COUNT_JS "document.write("$counter");";
        flock (COUNT_JS, $LOCK_UN);
        close (COUNT_JS);

        print "<img src="../icons/null.gif" border=0>";

        den Wert der Variablen $counter_neu könnte man auch splitten und die einzelnen Ziffern durch IMG-Tags ersetzen, so würde aus dem primitiven Textcounter ein primitiver Grafikcounter

        mögliche Irritationen bei hohen Trefferraten auf der Seite sind nur optischer Natur, im Hintergund wird dank "flock" trotzdem zuverlässig weitergezählt :-))

        Grüße
        Steffen D.

    2. Das funktioniert mit SSI. Du hast dann in

      das ist ein weg. der andere (und übliche) ist: du generierst mit GD.lib ein GIF und bindest es dann wie folgt ein

      <img src="/cgi-local/mein_counter.pl">