Counter
Christian
- php
Hi,
Was ist die beste Lösung für einen Counter? Ich mag nicht die vorgefertigen mit Werbung...bei Hotscripts.com gibt es welche. Allerdings bräuchte ich einen mit Reloadsperre und wo man seine eigene IP ausschließen kann, dass die eigenen Hits nicht gezählt werden. Aber wenn ich da einen PHP-Counter einbauen will, dann muss ich meine Index auch in index.php umbenennen und einige ältere Browser können aber keine index.php lesen, oder?
Wie krieg ich am besten so einen Counter und in welcher Sprache soll er sein?
Hi,
Was ist die beste Lösung für einen Counter?
m.E. die Auswertung der Zugriffs-Log-Datei.
wo man seine eigene IP ausschließen kann,
Ist die denn konstant? Bei den meisten Providern bekommst Du dynamisch eine zugewiesen - bei jedem Verbindungsaufbau eine andere...
Aber wenn ich da einen PHP-Counter einbauen will, dann muss ich meine Index auch in index.php umbenennen
Nein.
und einige ältere Browser können aber keine index.php lesen, oder?
Browser haben mit PHP nichts zu tun, PHP wird am Server ausgeführt, der Browser bekommt nur das HTML, daß vom Script ausgegeben wird.
cu,
Andreas
Hi Christian
Wie krieg ich am besten so einen Counter und in welcher Sprache soll er sein?
Schau mal, da gibt es in SelfPHP einen fertigen, mit IP Sperre und werbefrei:
http://www.selfphp.info/tipps_tricks/statistiken/besucherzaehler_integrieren.php
MfG, Dennis.
Hello,
Schau mal, da gibt es in SelfPHP einen fertigen, mit IP Sperre und werbefrei:
http://www.selfphp.info/tipps_tricks/statistiken/besucherzaehler_integrieren.php
Als Anregung vielleicht ganz nett, aber nicht empfehlenswert zum praktischen Einsatz. Der konkurrierende Betrieb ist nicht abgefangen, dazu müsste man schon ein flock() bemühen.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hello Tom,
... Der konkurrierende Betrieb ist nicht abgefangen, ...
Mal eine Nachfrage zum Verständnis: Was meinst Du damit?
Gruß aus Berlin!
eddi
Hello,
... Der konkurrierende Betrieb ist nicht abgefangen, ...
Mal eine Nachfrage zum Verständnis: Was meinst Du damit?
Es ist nicht berücksichtigt, dass im realen Betrieb viele Benutzer gleichzeitig ggf. jeder sogar mit mehreren Requests das Script aufrufen.
Das Ding wird dann krachen gehen.
Man muss für ein sauberes Zeitverhalten durch Locking sorgen.
Liebe Grüße aus http://www.braunschweig.de
Tom
Guten Morgen :)
Du Armer scheinst ja auch Nachtschicht zu schieben (handreichundbeileidverteil).
Aber ich kann nicht glauben, daß das jetzt ein Argument ist. Also habe ich mal kurz einen Versuch gemacht:
Der beschossene Rechner
Linux Debian
Apache 1.3
PHP CGI 4.3.4 mit etlichen Modulen
Startscript:
<?php
readfile('http://~0/eddi.php');
readfile('http://~1/eddi.php');
readfile('http://~2/eddi.php');
readfile('http://~3/eddi.php');
readfile('http://~4/eddi.php');
?>
(hätte viel lieber mit sockets geabreitent, aber ist halt nicht :\
Anfrageverabreitendes Script:
<?php
fputs(fopen('test.txt',a),'1');
fputs(fopen('test2.txt',w),$_SERVER['REMOTE_ADDR'].time().$_SERVER['REMOTE_ADDR']);
?>
Auf den fünf angesprochenen (schießenden) Rechnern habe ich folgendes Script (eddi.php) geparkt:
<?php
ini_set('max_execution_time','300');
$d=fopen('test.txt',a);
for($i=0;$i<10000;$i++)
{
$f=fopen('http://s166.deinprovider.de/test.php',r);
$x=fgets($f,100);
fclose($f);
fputs($d, microtime()."\n");
}
fclose($d);
?>
Zeitdauer: ca 450 sec
Verarbeitete Anfragen: 49 617 (byte der datei test.txt)
Verursachter Traffic: ca 27 MB
Demnach trat also ein Timeout bei einem/mehreren Servern auf. Allerdings kann ich nicht sehen, worauf Du hinaus willst, die Methode halte ich für relativ gut. Und sie scheint auch für größere Projekte durchaus brauchbar zu sein.
Wenn Du die einzelnen test.txt der Rechner sehen magst, mailto:grafik@frontplay.de
Gruß aus Berlin!
eddi
Hello,
Demnach trat also ein Timeout bei einem/mehreren Servern auf. Allerdings kann ich nicht sehen, worauf Du hinaus willst, die Methode halte ich für relativ gut. Und sie scheint auch für größere Projekte durchaus brauchbar zu sein.
Vielleicht ist Sven Rautenberg nochmal so freundlich, eine Requestserie abzufeuern. Irgendwo steht hier auch in einem Thread, wie das Tool vom Apachen hieß, mit dem der Test fast von alleine läuft. Ich garantier Dir, das kracht.
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo Tom,
realistisch betrachte, war der Test auch nicht gut, da nicht viel mehr als Header ausgetauscht wurden.
Ich werde mal Sven Rautenberg ganz lieb bitten, da mich schon interessiert, wo die Obergrenze ist.
Gruß aus Berlin!
eddi
Hallo Tom,
der Test mit Apache Benchmark hat mir nun die Sicht auf Deinen Hinweis vollends geöffnet!
Danke an Dich und Sven - wieder was gelernt :)
Gruß aus Berlin!
eddi
Moin!
Vielleicht ist Sven Rautenberg nochmal so freundlich, eine Requestserie abzufeuern. Irgendwo steht hier auch in einem Thread, wie das Tool vom Apachen hieß, mit dem der Test fast von alleine läuft. Ich garantier Dir, das kracht.
Das "geheimnisvolle" Tool für so eine Serie heißt "ab" - Apache Benchmark. Es ist üblicherweise unter /usr/sbin/ab gespeichert und könnte durchaus mit der Apache-Installation zusammen dort gelandet sein.
Einsatz:
ab -n 1000 -c 10 http://domainname.example/counterskript_mit_fopen_ohne_flock.php
Wenn das Programm durchgelaufen ist, sollten keinesfalls 1000 Zugriffe in der Datei gezählt worden sein, sondern ein mehr oder weniger heftig von dieser Zahl abweichendes Ergebnis ermittelt werden.
Je weniger Byte in die Datei geschrieben werden, desto unanfälliger ist das System natürlich - weil es schneller geht, 5 Byte als 500 Byte zu schreiben. Trotzdem ist Locking der einzig sichere Weg.
- Sven Rautenberg
Hello,
Das "geheimnisvolle" Tool für so eine Serie heißt "ab" - Apache Benchmark. Es ist üblicherweise unter /usr/sbin/ab gespeichert und könnte durchaus mit der Apache-Installation zusammen dort gelandet sein.
Einsatz:
ab -n 1000 -c 10 http://domainname.example/counterskript_mit_fopen_ohne_flock.php
Wenn das Programm durchgelaufen ist, sollten keinesfalls 1000 Zugriffe in der Datei gezählt worden sein, sondern ein mehr oder weniger heftig von dieser Zahl abweichendes Ergebnis ermittelt werden.
Je weniger Byte in die Datei geschrieben werden, desto unanfälliger ist das System natürlich - weil es schneller geht, 5 Byte als 500 Byte zu schreiben. Trotzdem ist Locking der einzig sichere Weg.
Danke Sven...
jetzt habe ich mir sooo viel Mühe gemacht, den Thread wiederzufinden ...
Aber diesmal schreibe ich das mal in das Musterscript rein. Muss da ja sowieso noch was korrigieren.
http://forum.de.selfhtml.org/archiv/2003/12/67534/#m387422
Liebe Grüße aus http://www.braunschweig.de
Tom