PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Scheduler generiert PHP Datei



Roaster20
26-09-2002, 08:42
Hallo Kollegen

Ich würde gerne eine Auswertung der Seitenzugriffe machen. Diese steht auch schon und durchsucht die ganze Datenbank nach den relevanten Informationen. Das dauert natürlich, denn die Datenbank ist in der Zwischenzeit ganz schön angewachsen. Naja, was habe ich mir überlegt.
Der Scheduler von Windows generiert mir die Datei um Mitternacht. Wie speicher ich aber eine von PHP generierte Datei als ganz normale HTML Datei ab. Also quasi, als PHP intrpretierte Datei, die einfach abgerufen werden kann. Habe ich mich verständlich ausgedrückt :D ?!

Viele Grüsse
Martin

elrond
01-10-2002, 11:15
die idee das so zu machen ist nicht schlecht...

ich würde perl dafür einsetzten. der Scheduler startet ein script, das deine daten zusammensammelt und in eine für schnelle abfragen optimierte datenbankstruktur schreibt. mit deiner php-auswertungsseite kannst du die daten dann abfragen...

:D

Roaster20
03-10-2002, 18:54
Ok, hört sich gut an. Kann ich Perl auf einem Windows 2000 Server einsetzen. Wo bekomme ich Perl her und welche Befehle sollte ich kennen ?!

Vielen Dank und viele Grüsse
Martin

RapidMax
07-10-2002, 01:08
Der beste Einstiegspunkt wird CPAN (http://www.cpan.org/) sein.

Gruss, Andy

Gaert
19-10-2002, 18:08
Mal ein wenig einfacherer Ansatz ;) :

Schreib mal ganz am Anfang von deinem Auswertungsskript



ob_start();


Ganz zum Schluss schreibst du dann:



$data = ob_get_contents();
$file = date("Y-m-d") . ".html";
$fh = fopen ("./$file","w");
fwrite($fh,$data ,10000);
fclose($fh);
ob_flush();


Das erzeugt dir eine Datei mit dem aktuellen Datum als Namen und dem Kompletten PHP output!

MfG

Gaert

Roaster20
23-10-2002, 15:09
Vielen Dank Gaert. Das funktioniert wunderbar.
Ich war schon im Begriff mir PERL anzueignen, was bestimmt nicht schlecht wäre. Aber so gehts auch wunderbar.

Ich habe mich nur am Anfang gewundert, warum er immer abgebrochen hat, aber nachdem ich mir fwrite und die 10000 am Ende nochmal angeschaut habe, war es klar. Jetzt funzt es, vielen Dank :D

Viele Grüsse
Martin

Gaert
23-10-2002, 15:26
Na... is doch schön wenns auch einfach funktioniert... :D

das mit dem fwrite($fh,$data ,10000); war halt n schneller hack!

Besser wäre natürlih fwrite($fh,$data ,strlen($data)); gewesen... :rolleyes:

The Ripper
23-10-2002, 16:25
ich würde einfach eine cache-datei im html-format einsetzen:
- zuerst wird geprüft, ob die datei vorhanden ist und wann sie zuletzt aktualisiert wurde
- ist sie nicht vorhanden oder ist sie "veraltet", so generiert das php-script die datei neu und gibt deren inhalt aus
- ist sie vorhanden und neu genug, wird einfach ihr inhalt ausgegeben

€: huch, ich seh grad dass das gaerts ansatz ergänzt um einen aufruf von stat() und einem if-statement ist

elrond
23-10-2002, 16:36
wenn man den output cashed hat der erste die a..karte und muss die seite erzeugen. trotzdem muss man vor jedem anzeigen checken, ob sich an der db etwas geändert hat...syslog oä. tut man das nicht, kann man nicht so genau sagen wie exakt die daten auf der seite sind. wenn man hinhegen stündlichj eine seite generiert hat man einen definierten stand den man nach aussen kommunizieren kann. :rolleyes:

kann natürlich gut sein, dass das nicht so wichtig ist, dann ist der ansatz mit dem caching klasse..

Roaster20
23-10-2002, 16:44
Ich mache das ganze Mal in den Scheduler rein und berichte dann, wie es am besten läuft bzw. was man vielleicht optimieren kann.

Viele Grüsse
Martin