MySQL vs Datei Performance

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • MySQL vs Datei Performance

    Hi

    Vorneweg, ich habe auf meinem lokalen Server und einem anderen Webserver bereits getestet und beide Variante geben sich nicht viel.

    Und zwar geht es darum, dass ich einen Array im Skript brauche, den ich einfach bearbeiten kann.

    Ich habe das zuerst alles in einer MySQL Datenbank gespeichert mit zwei Spalten, einer char(64) und einer text.

    Ich habe danach den Inhalt aber auch noch in eine Textdatei gespeichert, hauptsächlich weil das Synchronisieren von zwei Datenbanken über zwei Computer aufwendiger ist als das Synchronisieren von zwei Dateien.

    Auf jeden Fall habe ich mich da gefragt, was wohl performanter wäre. Eine Textdatei via Regex zu parsen oder einen MySQL Query zu durchlaufen.

    Die Textdatei ist folgende (momentan etwa 2.5kb gross):
    Snippets - Pastebin.com

    Der Code der die Datenbank, respektive die Datei ausliest ist folgender:
    PHP-Code:
    $t microtime(true);

    //Snippets auslesen aus Datei
    $snippets_txt implode(''file("inc/php/snippets.txt"));
    preg_match_all("!\{([\a\n-_]*)\{\n([^\}]*)\n\}\}!si",$snippets_txt,$snippets_txt_match);
    while(list(
    $key,$value)=each($snippets_txt_match[1])){
        
    $snippets_txt[$value] = $snippets_txt_match[2][$key];//echo $value;
    }


    //Snippets auslesen aus Datenbank
    $query="SELECT * FROM snippets";
    $res=mysql_query($query)OR DIE(mysql_error());
    while(
    $row=mysql_fetch_array($res)){
        
    $snippets_sql[$row['snippet_key']]=$row['snippet_code'];
    }

    echo (
    microtime(true) - $t); 

    Jenachdem, welchen Teil ich auskommentieren, wird der andere gemessen.

    Bei meinem lokalen Server und einem Webserver (der leider nicht dem definitiven Webserver entspricht, da diese noch nicht bestellt wurde) sind beide Varianten etwa gleich schnell, mal die eine mal die andere.

    So ganz allgemein, welche Variante ist wohl besser geeignet?
    Also ich tippe eher auf die Textdatei, da ja eine Datei auslesen eigentlich weniger Rechenleistung benötigt, als eine MySQL Abfrage.

  • #2
    Zitat von fabio Beitrag anzeigen
    Eine Textdatei via Regex zu parsen oder einen MySQL Query zu durchlaufen.
    Möglichkeit 3: Den PHP-Parser die Arbeit machen lassen, anstatt selber mit regulären Ausdrücken zu hantieren.

    var_export existiert.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Zitat von wahsaga Beitrag anzeigen
      var_export existiert.
      Kenn ich, aber gerade mit HTML Code in der Variabel drinnen, gibt das immer so viele Escape Zeichen.
      Auch das kommentieren der Abschnitte (welcher Platzhalter für was gedacht ist) wird schwieriger damit.
      Zudem vermeide ich wo möglich den eval() zu nutzen aus Sicherheitsgründen.

      Kommentar


      • #4
        Zitat von fabio Beitrag anzeigen
        Kenn ich, aber gerade mit HTML Code in der Variabel drinnen, gibt das immer so viele Escape Zeichen.
        Ja und? Darin sollst du ja auch nicht manuell herumpfuschen, sondern dir ein kleines Script schreiben, über das du die Werte ändern kannst - und das dann wieder den PHP-Code erzeugt, der diese in für PHP lesbarer Form darstellt.

        Zudem vermeide ich wo möglich den eval() zu nutzen aus Sicherheitsgründen.
        Von eval war auch keine Rede.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Zitat von wahsaga Beitrag anzeigen
          Von eval war auch keine Rede.
          Ja an ein generieren des Codes von einem separaten Skript habe ich auch gedacht, werde ich wohl machen.

          Aber wie ich den Text auslesen kann und wieder als Variabel speichern kann, ohne eval() zu nutzen musst du mir erklären.
          Auch in den Beispielen der PHP-Seite habe ich dazu nichts gesehen.
          Ich könnte den generierten Text natürlich in das PHP Skript von Hand reinkopieren, aber ist auch blöde.

          Alternativ könnte ich auch die Variabel in eine .php Datei schreiben mit dem "<PHP $variabel=".var_export().";?>"-Inhalt und diese dann einfach Includen, aber ist mehr oder weniger das gleiche wie direkt die eval() zu nutzen.

          Kommentar


          • #6
            Zitat von fabio Beitrag anzeigen
            aber ist mehr oder weniger das gleiche wie direkt die eval() zu nutzen.
            Na ja, m.E. nicht so ganz.

            Und die eingegebenen Werte vorher zu validieren, hindert dich ja auch keiner.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar

            Lädt...
            X