Cache: Funktionen vs. Variabelen

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

  • Cache: Funktionen vs. Variabelen

    Hi, zurzeit versuche ich die Datenbanklast zu verringern und implementiere dazu eine Klasse die Daten aus der Datenbank als PHP-Datein zwischenspeichern soll.

    Ist es nun besser wenn man m PHP-Cache Arrays direkt zuweißt oder innerhalb einer Funktion und dann die Arrays Rückgabewert hat.

    In wieweit werden Funktionen schon vom PHP Parser interpretiert?

  • #2
    Re: Cache: Funktionen vs. Variabelen

    Original geschrieben von bletch
    Ist es nun besser wenn man m PHP-Cache Arrays direkt zuweißt oder innerhalb einer Funktion und dann die Arrays Rückgabewert hat.
    wtf?!?

    Kommentar


    • #3
      vorweg um die Datenbanklast du verringern, musst du möglichst wenige SQL anweisungen haben(dementsprechend sind sie meist auch schwieriger zu machen!)

      LIMIT ist auch ganz nützlich!

      ansonsten: http://dev.mysql.com/doc/refman/5.0/...imization.html

      zu der Array frage:
      Wenn du eine Funktion hast, liest du mit mysql_fetch_array() einen array ein und returnst diesen dann bzw diesen dann in einem weiteren array verschachtelt, damit du alle rows hast!

      wenn du es direkt machst weisst er nur den array zu bzw gibt ihn aus!

      mit funktionen ist es übersichtlicher aber nicht schneller!

      ein beispiel für eine funktion die was zurückgibt
      PHP-Code:
        function getBeitrag($id){
          
      $qry 'SELECT id, titel, name FROM news';
          if(
      $new mysql_query($qry)){
            while(
      $n mysql_fetch_assoc($new)){
              
      $news[] = $n;
            }
            return 
      $news;
          }else{
            return array(
      0,$qry,mysql_errno(),mysql_error());
            
      // alternativ print_r(array(0,$qry,mysql_errno(),mysql_error()));
          
      }
        } 
      Killerspiele sollten in der Größenordnung von Kinder********************grafie eingeordnet werden.(G. Beckstein)
      - ...und solche Behauptungen in "falsches Resourcenmanagement"

      Kommentar


      • #4
        Re: Cache: Funktionen vs. Variabelen

        Original geschrieben von bletch
        Hi, zurzeit versuche ich die Datenbanklast zu verringern ...
        wie hoch ist sie denn momentan?
        Ist es nun besser wenn man m PHP-Cache Arrays direkt zuweißt oder innerhalb einer Funktion und dann die Arrays Rückgabewert hat.
        und was hat das mit der db-last zu tun? definiere "besser" (*). weißt du, wie funktionsaufrufe im speicher stattfinden? wie verbindungen zu offenen resourcen erhalten werden? weißt du, was z.b. bei rekursiven funktionen passiert? kennst du den unterschied zwischen lokalen und globalen variablen, sagt dir garbage collector etwas? berücksichtige diese fragen bitte bei deiner antwort auf (*).
        In wieweit werden Funktionen schon vom PHP Parser interpretiert?
        "...schon vom parser und nicht erst von..."? soweit ich informiert bin, kennt php keine inline-funktionen..

        Kommentar


        • #5
          Also bis jetzt werden die Daten immer wenn ich sie Benötige aus der Datenbank gelesen.
          Wie man SQL-Abfragen optimiert weiß ich und wie man die Datenbank am besten aufbaut weiß ich auch.

          Mehrere Eigenschaften muss man beachten wenn man überlegt ob sich ein Zwischenspeicher lohnt:
          Wie oft wird der Inhalt in dieser Form gelesen.
          In welchen Abständen ändert sich der Inhalt.
          In wieweit wird das System komplizierter wenn man Daten zwischenspeichert; welche Fehleranfälligkeit besteht.
          => wenn ich grade was vergessen habe in der Aufzählung sagt es.


          Was ich jetzt Vergleiche:
          PHP-Code:
          <?php
          /*
          * daten werden in Funktionen gespeichert und bei Bedarf ausgeführt.
          * Vorteil: es lassen sich Kontrollstrukturen in den Cache einfügen
          */
          function xxxCacheGruppen(){
              return array(
          1=>'gruppe1',2=>'gruppe2');
          }
          ?>
          mit
          PHP-Code:
          <?php
          /*
          * daten werden einfach in eine Variable gespeichert und werden mitgeschleppt
          * Vorteil: einfacher zu implementieren
          */
          $xxxCache['Gruppen'] = array(1=>'gruppe1',2=>'gruppe2');
          ?>
          Macht es vom Speicherverbrauch oder von der Geschwindigkeit einen großen Unterschied wenn man viele Funktionen/Variabelen verwendet?

          Kommentar


          • #6
            Ich cache grundsätzlich als Arrays, und das in Verbindung mit serialize
            Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
            var_dump(), print_r(), debug_backtrace und echo.
            Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
            Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
            Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

            Kommentar


            • #7
              willst du nicht auf die gestellten fragen eingehen?

              Macht es vom Speicherverbrauch oder von der Geschwindigkeit einen großen Unterschied wenn man viele Funktionen/Variabelen verwendet?
              es macht einen unterschied, wenn auch keinen großen (zumindest in der vorgestellten form). funktionsaufrufe erfordern i.d.r. mehr speicher. allerdings ist das in _äußerst_ seltenen fällen ein entscheidender punkt in optimierungsfragen, denn dieser aspekt ist im gegensatz zu vielen anderen fragen fast völlig unbedeutend.
              OffTopic:
              vielleicht ist dir auch schon die frage begegnet, ob die verwendung von hochkommata im gegensatz zu anführungsstrichen nicht effizienter sei..


              wenn du dich über cache informieren möchtest, schau dir fertige lösungen an, etwa von zend, apc oder turck mmcache.

              Kommentar


              • #8
                danke penizillin, die Frage ist damit erledigt.

                OffTopic:
                ja und die frage wurde wirklich mal irgendwo diskutiert

                Kommentar

                Lädt...
                X