PDO: PreparedStatement Cache

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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!
    Last edited by combie; 12-01-2012, 07:40.
    Wir werden alle sterben

    Comment


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

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

      Comment


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

        Comment


        • #5
          Originally posted by pascal007 View Post
          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!

          Comment

          Working...
          X