kostenloser Webspace werbefrei: lima-city


Ladezeit optiemieren -> MySQL oder Textdatei

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    dussel

    Kostenloser Webspace von dussel

    dussel hat kostenlosen Webspace.

    ICh m?chte fragen, mit welcher methode die seite schneller geladen wird:

    log-daten als textdatei abspeichern (daten erfassen, datei ?ffnen, werte hinzuf?gen, datei schliesen)

    oder

    log-datein in MySQL-Tabelle abspeichern (daten erfassen, verbindung herstellen, daten eintragen, verbindung trennen)



    Danke!!


    Edit:

    Oder gibt es ?berhaupt eine andere M?glichkeit um log-informationen zu speichern? (referer, ip, zeit, sprache, host,...)

    Beitrag ge?ndert am 10.11.2005 20:30 von dussel
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage


  3. ICh m?chte fragen, mit welcher methode die seite schneller geladen wird:

    log-daten als textdatei abspeichern (daten erfassen, datei ?ffnen, werte hinzuf?gen, datei schliesen)

    oder

    log-datein in MySQL-Tabelle abspeichern (daten erfassen, verbindung herstellen, daten eintragen, verbindung trennen)


    Auch wenn mich die MySQL-Fanatiker jetzt sicher gerne steinigen m?chten:

    Um simple Logfiles zu archivieren, ist eine Datei die schnellere Alternative. Man kann mit dem Append-Modus ( fopen($blubb, 'a')) Daten ziemlich einfach und schnell an eine existierende Datei anh?ngen.

    Bei der Datenbankversion ist die Verbindung zum Datenbank-Server der Flaschenhals. Die Geschwindigkeit deines Scripts h?ngt also von dieser Verbindung ab. Beim Shared-Hosting kommt das Problem dazu, dass du dir den Datenbankserver mit anderen Usern teilen musst.


    Au?erdem kann eine Standard-Logfile-Datei (CLF) von vielen Logfile-Analyze-Programmen ausgewertet werden. F?r eine Datenbank m?sstest du erst ein Analyse- oder Konvertierprogramm schreiben.


    Oder gibt es ?berhaupt eine andere M?glichkeit um log-informationen zu speichern? (referer, ip, zeit, sprache, host,...)


    Wirklich sinnvolle Alternativen gibt es meines Wissens nicht.
  4. Autor dieses Themas

    dussel

    Kostenloser Webspace von dussel

    dussel hat kostenlosen Webspace.

    ja, dann werde ich das mit der textdatei weiterverwenden!

    du hast etwas von CLF datein geschrieben! Was ist das?? ich habe es bis jetzt mit einer *.txt datei gemacht!
  5. CLF hei?t "combined logfile format". In diesem Format speichern Webserver meistens ihre Server-Logs, beispielsweise der Apache-Webserver. Den Aufbau einer Zeile dieses Formats kannst du dir hier erkl?ren lassen:

    http://de.selfhtml.org/projekt/kontrollieren.htm#logdateien

    Im Prinzip sind es auch gew?hnliche Text-Dateien. Die Endung ist dabei egal, aber meistens lautet sie ".log".

    Wenn ich mal unversch?mt Werbung f?r meine foxy_access_log-Funktion (ehemals update_log) machen d?rfte:

    http://alopex.pyrokar.lima-city.de/index.php/PHP/essentials.html#update_log

    Die derzeitige Dokumentation ist allerdings unter aller Sau.

    MfG
    alopex

  6. [...]
    Wenn ich mal unversch?mt Werbung f?r meine foxy_access_log-Funktion (ehemals update_log) machen d?rfte:

    http://alopex.pyrokar.lima-city.de/index.php/PHP/essentials.html#update_log

    Die derzeitige Dokumentation ist allerdings unter aller Sau.

    MfG
    alopex

    Ich verstehe sowieso nicht, wieso du immer so viel Code f?r so ein kleines Problem schreibst. ^^

    <?php
    /*
    +-----------------------------------------------------------------------+
    | Dieses Werk bzw. Inhalt steht unter einer Creative Commons Namensnennung 3.0 Unported Lizenz.
    | http://creativecommons.org/licenses/by/3.0/ 
    +-----------------------------------------------------------------------+
    | @version : v0.1.0                                                     |
    | @filename : /plugins/log.php                                          |
    | @created : 25.10.2005                                                 |
    | @modified : 11.11.2005                                                |
    +-----------------------------------------------------------------------+
    */
    
    $log                            = array ();
    $log['ip']                      = ( isset ( $_SERVER['X-FORWARDED-FOR'] ) && trim ( $_SERVER['X-FORWARDED-FOR'] ) ) ? $_SERVER['X-FORWARDED-FOR'] : '';
    $log['ip']                      = ( isset ( $_SERVER['HTTP_X_UD_REMOTE_ADDR'] ) && trim ( $_SERVER['HTTP_X_UD_REMOTE_ADDR'] ) ) ? $_SERVER['HTTP_X_UD_REMOTE_ADDR'] : '';
    $log['ip']                      = ( trim ( $log['ip'] ) ) ? $log['ip'] : $_SERVER['REMOTE_ADDR']; // IP des Users
    $log['user']                    = 'Gast';                               // Benutzername
    $log['logdate']                 = date ( 'd/M/Y:H:i:s O', time () );    // Datum f?r Log Datei
    $log['method']                  = ( isset ( $_SERVER['REQUEST_METHOD'] ) ) ? $_SERVER['REQUEST_METHOD'] : 'GET'; // Methode
    $log['uri']                     = ( isset ( $_SERVER['REQUEST_URI'] ) ) ? $_SERVER['REQUEST_URI'] : '-'; // URI
    $log['protocol']                = ( isset ( $_SERVER['SERVER_PROTOCOL'] ) ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.1'; // Protokoll
    $log['status']                  = '200';                                // Status
    $log['bytes']                   = '-';                                  // gesendete Bytes
    $log['referer']                 = ( isset ( $_SERVER['HTTP_REFERER'] ) && trim ( $_SERVER['HTTP_REFERER'] ) ) ? $_SERVER['HTTP_REFERER'] : '-'; // Refer, falls nicht gesetzt ist er "-"
    $log['user_agent']              = ( isset ( $_SERVER['HTTP_USER_AGENT'] ) ) ? $_SERVER['HTTP_USER_AGENT'] : '-'; // Betriebsystem, Browser und Sprache
    $line                           = $log['ip'].' - '.$log['user'].' ['.$log['logdate'].'] "'.$log['method'].' '.$log['uri'].' '.$log['protocol'].'" '.$log['status'].' '.$log['bytes'].' "'.$log['referer'].'" "'.$log['user_agent'].'"'."\x0d\x0a";
    
    $months                         = array ( 1 => 'Januar', 2 => 'Februar', 3 => 'Maerz', 4 => 'April', 5 => 'Mai', 6 => 'Juni', 7 => 'Juli', 8 => 'August', 9 => 'September', 10 => 'Oktober', 11 => 'November', 12 => 'Dezember' );
    $month                          = date ( 'n' );                         // Monat
    $month                          = $months[$month]; // deutscher Monatsname
    
    $file                           = 'logs/log_'.$month.'_'.date ( 'Y', time () ).'.log';
    $f                              = fopen ( $file, 'a' );
    flock ( $f, LOCK_EX );
    fputs ( $f, $line );
    flock ( $f, LOCK_UN );
    fclose ( $f );
    ?>


    Hab den Code gerade mal umgeschrieben sollte aber klappen. ;-)

    MfG Lucas

    Beitrag ge?ndert am 11.11.2005 22:12 von lucas9991

    Beitrag zuletzt geändert: 23.7.2011 13:09:35 von karpfen

  7. Ich verstehe sowieso nicht, wieso du immer so viel Code f?r so ein kleines Problem schreibst. ^^


    Deswegen:


    $f = fopen ( $file, 'a' );
    flock ( $f, LOCK_EX );
    fputs ( $f, $line );
    flock ( $f, LOCK_UN );
    fclose ( $f );


    Du hast nichtmal die "@"s vor die Funktionsnamen gemacht. Wenn man eine Datei mit fopen() ?ffnet, kann man nie sicher sein, ob sie auch ge?ffnet werden konnte. Das Gleiche gilt f?r flock(). Und schlie?lich hat dein Code noch einen Haken: Bricht der Benutzer den Ladevorgang ab, wenn gerade versucht wird, ins Logfile zu schreiben, wird auch das PHP-Script pl?tzlich beendet. Deswegen in meinem Code die umst?ndlichen Sicherheitsabfragen. Das gleiche gilt ?brigens auch f?r Datenbankverbindungen, wenn sie nicht "permanent" sind.

    Dein Code wird auf einer stark frequentierten Site ?ber kurz oder lang fehlerhafte Logfile-Eintr?ge hinterlassen. Es kann auch passieren, dass Logeintr?ge nicht geschrieben werden. Das sieht man nat?rlich dem Logfile hinterher nicht an.

    Und wenn du wirklich Code-Zeilen sparen willst: Du kannst
    flock ( $f, LOCK_UN );
    weglassen, das macht fclose() automatisch.
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!