Tom: Seitenaufrufzähler

Hello,

ich möchte einen Seitenaufrufzähle implementieren.

Bevor Ihr jetzt antwortet, seid so nett, und schaut, wer hier postet ;-)

Der Zähler muss das Problem beseitigen, dass Aufrufe nicht vollständig ausgelieferter Seiten gezählt werden. Seitenaufrufe, bei denen der User im Browser auf der Reloadfunktion den nervösen Finger betätigt, also ein Userabort stattfindet, bevor die Seite vollständig ausgeliefert wurde, dürfen also nicht gezählt werden.

Bevor ich jetzt eine eigene Untersuchung zu Thema beginne, stelle ich also meine Frage: Hat da schon jemand genauer drüber nachgedaccht und einen Lösungsweg? Dann wäre ich für Hinweise dankbar, was zu beachten ist.

Harzliche Grüße aus http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau
  1. Hi,

    Bevor ich jetzt eine eigene Untersuchung zu Thema beginne, stelle ich also meine Frage: Hat da schon jemand genauer drüber nachgedaccht und einen Lösungsweg? Dann wäre ich für Hinweise dankbar, was zu beachten ist.

    ich habe hier gelesen, dass es durchaus moeglich ist mit einer serverseitigen Logik festzustellen, ob der Nutzer noch "da ist".

    Ansonsten kannst Du es ja wie die Schufa machen und den Nutzer einen "Confirm Request" absetzen lassen.

    Gruss,
    Ludger

    1. Hello,

      ich habe hier gelesen, dass es durchaus moeglich ist mit einer serverseitigen Logik festzustellen, ob der Nutzer noch "da ist".

      Ansonsten kannst Du es ja wie die Schufa machen und den Nutzer einen "Confirm Request" absetzen lassen.

      Was ist das denn? Ich kann doch heute kein Denglisch ;-)

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      1. Hi,

        Ansonsten kannst Du es ja wie die Schufa machen und den Nutzer einen "Confirm Request" absetzen lassen.

        Was ist das denn? Ich kann doch heute kein Denglisch ;-)

        einen zweiten Request absetzen, der den Erhalt des ersten anhand einer RequestID bestaetigt.

        Gruss,
        Ludger

        1. Hello,

          einen zweiten Request absetzen, der den Erhalt des ersten anhand einer RequestID bestaetigt.

          Also mittels Umleitung in der Antwort dem User die eigentliche Antwort zur Verfügung stellen?

          Harzliche Grüße aus http://www.annerschbarrich.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau
          1. Hi,

            einen zweiten Request absetzen, der den Erhalt des ersten anhand einer RequestID bestaetigt.

            Also mittels Umleitung in der Antwort dem User die eigentliche Antwort zur Verfügung stellen?

            nein, die Schufa fordert vom Nutzer nach Erhalt von Daten die explizite Bestaetigung dieser. Erst dann wird der Vorgang kostenpflichtig. Sollte natuerlich die Bestaetigung zu oft ausbleiben, gibts natuerlich Kommunikationsbedarf und so.

            Ich weiss jetzt nicht genau, was Du treibst. Vermutlich stellst Du HTML-"Seiten" zur Verfuegung. Da muesstest Du dann moeglicherweise wirklich mit so lustigen Sachen wie versteckten Frames und so kommen.

            Gruss,
            Ludger

  2. Hi,

    Bevor Ihr jetzt antwortet, seid so nett, und schaut, wer hier postet ;-)
    Der Zähler muss das Problem beseitigen, dass Aufrufe nicht vollständig ausgelieferter Seiten gezählt werden.

    Im Logfile stehen üblicherweise auch die ausgelieferten Bytes …

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Hi,

      Der Zähler muss das Problem beseitigen, dass Aufrufe nicht vollständig ausgelieferter Seiten gezählt werden.

      Im Logfile stehen üblicherweise auch die ausgelieferten Bytes …

      glaubst Du da an die Moeglichketi einer sauberen Implementierung?

      Gruss,
      Ludger

    2. Hello,

      Im Logfile stehen üblicherweise auch die ausgelieferten Bytes …

      Darüber habe ich selbstverständlich nachgedacht. Allerdings kann sich die Anzahl der Bytes einer Seite auch dynamisch ändern, da die Seiten generiert werden. Und mit OB_start() will ich eigentlich nicht arbeiten.

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
  3. hi,

    Seitenaufrufe, bei denen der User im Browser auf der Reloadfunktion den nervösen Finger betätigt, also ein Userabort stattfindet, bevor die Seite vollständig ausgeliefert wurde, dürfen also nicht gezählt werden.

    Bevor ich jetzt eine eigene Untersuchung zu Thema beginne, stelle ich also meine Frage: Hat da schon jemand genauer drüber nachgedaccht und einen Lösungsweg?

    hilft dir http://www.php.net/manual/de/features.connection-handling.php bei deinen überlegungen weiter?

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hello,

      hilft dir http://www.php.net/manual/de/features.connection-handling.php bei deinen überlegungen weiter?

      Bestimmt!
      Damit habe ich schon reichlich herumexperimentiert.
      Es gibt aber wohl keine verlässliche Funktion, um festzustellen, dass das letzte Byte einer Ausgabe tatsächlich den Server ohne einen Userabort auf Clientseite verlassen hat. Ist schließlich auch ein Durchgriff durch die Protokollschichten. Vielleicht sollte ich da eher auch eine Art von Reloadsperre basteln, die eienen erneuten Request desselben Clients auf dieselbe Seite innerhalb einer Sekude (oder ähnlich) verhindert. Aber da dreht man sich doch im Kreise. Wie erkenne ich den Client? Ist doch ebenfalls nicht sicher möglich. Denn abschalten kann der doch wieder alles (Cookies, Authentication, usw).

      Allerdings geht mir durch den Kopf, dass wenn ich die Seite nur durch einen Post zugänglich mache, die Postdaten beim Reload ja unverändert wiederholt werden müssten, oder? Da könnte man also zumindest ein Zertifikat einstanzen.

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
      1. Hi,

        Es gibt aber wohl keine verlässliche Funktion, um festzustellen, dass das letzte Byte einer Ausgabe tatsächlich den Server ohne einen Userabort auf Clientseite verlassen hat.

        Wie auch? Es könnte ja ein Proxy dazwischen liegen, der erst die Seite komplett vom Server holt und dann erst mit der Übertragung zum Client (so der noch nicht abgebrochen hat) beginnt, oder der zumindest teilweise puffert.
        Die Information "letztes Byte hat den Server verlassen" ist also nicht aussagekräftig genug für Dich.

        Es bleibt vermutlich nur ne Javascript-basierte Lösung, onload wird eine Graphik angefordert (über ein PHP-Script, das als Parameter die URL des Dokuments mitkriegt). Damit verlierst Du natürlich javascript-freie Clients bei Deiner Zählung.

        Wenn es ohne Javascript funktionieren soll, müßte die Graphik ganz am Ende der Seite platziert sein, um den Fehler möglichst gering zu halten (so daß höchstens noch ein schließendes blocklevel-Element-Tag und </body></html> nicht beim Client angekommen sein kann.

        In beiden Fällen besteht aber das Problem, daß Clients für die zusätzlichen Dateien (CSS, Bilder, Javascript ...) nur ne begrenzte Zahl von gleichzeitigen Requests zulassen. Wenn also das HTML schon längst übertragen wurde, dauert es u.U. noch ne ganze Weile, bis der Zählerbild-Request ausgelöst wird - Zeit für den User (oder sonstige Komponenten), die Verbindung vorzeitig abzubrechen.

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        Schreinerei Waechter
        Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.