PDO: PreparedStatement Cache

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

  • PDO: PreparedStatement Cache

    Hallo zusammen

    Ich habe mal eine Frage. Was haltet ihr davon, wenn man während eines Requests die PreparedStatement-Objects cached in einer Singleton-Class?

    Also etwas in der Art:

    PHP-Code:
    <?php

    class PDOPrepStmntCache {
        private static 
    $instance null;

        private 
    $cache;
        
        private 
    __construct() {
            
    $this->cache = array();
        }
        
        public static function 
    getInstance() {
            if(
    self::$instance === null)
                
    self::$instance = new PDOPrepStmntCache();
                
            return 
    self::$instance;
        }
        
        private function 
    cacheStmnt($sql,PDOStatement $prepStmnt) {
            
    $this->cache[$sql] = $prepStmnt;
            
    // ODER: $this->cache[sha1($sql)] = $prepStmnt; ?
        
    }
        
        public function 
    getQuery($sql) {
            if(!
    array_key_exists($this->cache,$sql)) {
                return 
    null;
                
            return 
    $this->cache[$sql];$
            
    // ODER EBEN: $this->cache[sha1($sql)];
        
    }
    }

    ?>
    Macht das eurer Meinung nach Sinn? Habe gelesen der Performance-Gewinn sei eher minimal... aber es machen es trotzdem ein paar Leute...

  • #2
    1. Singletons sind böse.
    2. Prepared Statements werden schon vom DBMS gecached. Zumindest nur einmal geparst und können danach beliebig oft verwendet werden. Macht nur selten Sinn, bei unseren kurzlebigen Scripten.

    Also, meine Meinung: NEIN!
    Zuletzt geändert von combie; 12.01.2012, 07:40.
    Wir werden alle sterben

    Kommentar


    • #3
      Okay alles klar . Das habe ich noch halb vermutet...

      Aber weshalb Singletons böse sind, das seh ich nicht ganz ein ...

      Kommentar


      • #4
        Google: "Warum sind Singleton böse?"
        Wir werden alle sterben

        Kommentar


        • #5
          Zitat von pascal007 Beitrag anzeigen
          Okay alles klar . Das habe ich noch halb vermutet...
          Ob ein (zusätzlicher) Cache Zugriffe schneller macht, muss man messen. Vermutungen sind da selten die richtige Methode.

          Aber weshalb Singletons böse sind, das seh ich nicht ganz ein ...
          Behalte diese Ansicht. Menschen bezeichnen meist etwas als Böse, weil sie es nicht verstehen. Beim Singleton(-Pattern) ist es die falsche Anwendung, die "böse" ist. Das Konzept selbst hat seine Berechtigung, wird aber in PHP-Scripten eher selten gebraucht.
          Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

          Kommentar

          Lädt...
          X