Ergebnis 1 bis 4 von 4

Thema: Zend_Paginator, Datenbankabfrage trotz Cache..

  1. #1
    Benutzer
    Registriert seit
    11.04.2009
    Beiträge
    35
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Frage Zend_Paginator, Datenbankabfrage trotz Cache..

    Hallo zusammen,

    bei meinen ersten Berührungen mit Zend_Cache komme ich einfach nicht weiter, auch Google konnte mir nicht helfen.
    Das Problem ist, dass obwohl im tmp zu der entsprechenden Abfrage und Seitenzahl ein Cache angelegt ist, dennoch eine zeitaufwändige Datenbankabfrage durchgeführt wird. Der Cache wird wohl auch unter der richtigen ID angelegt, aber bei jeder Abfrage wird die Cache Datei einfach überschrieben statt ausgelesen...

    Der Code ist:

    PHP-Code:
    $select $this->getDbTable($this->_positionenTable)->select();

            if (
    $operator == "ist gleich") {
                
    $select->where($feld ' = ?'$wert);
            }
            if (
    $operator == "beinhaltet") {
                
    $select->where($feld ' like ?''%' $wert '%');
            }
            
    $select->order('positionen_id DESC');

            
    $paginator Zend_Paginator::factory($select);
            if (
    == $paginator->getCurrentItemCount()) {
                return 
    false;
            }

            
    $paginator->setCurrentPageNumber($paginator_model->getSeite());
            
    $paginator->setItemCountPerPage($paginator_model->getEintraegeProSeite());
            
    $positionen_model->setPaginator($paginator);

            
    $frontendOptions = array(
                
    'lifetime' => 3600,
                
    'automatic_serialization' => true
            
    );

            
    $backendOptions = array(
                
    'cache_dir' => APPLICATION_PATH '/tmp/'
            
    );
            
    $cache Zend_Cache::factory('Core''File'$frontendOptions$backendOptions);
            
    Zend_Paginator::setCache($cache); 
    Woran könnte das liegen?
    Geändert von designkey (11.08.2012 um 14:29 Uhr)

  2. Aktuelles Zend Framework Stellenangebot


    Webprogrammierer(in)
    von ZAPITANO GmbH

    Details ansehen
  3. #2
    Benutzer
    Registriert seit
    05.12.2009
    Beiträge
    75
    Thanks
    2
    Thanked 1 Time in 1 Post

    Standard

    Hatte auch mal ein ähnliches Problem; schau dir mal die ID (o.ä.) an; irgendwas ändert sich immer...

  4. #3
    Benutzer
    Registriert seit
    11.04.2009
    Beiträge
    35
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Zend_Paginator
    getItemsByPage($pageNumber)

    versucht bei Seite 1 die Datei "Zend_Paginator_1_cfe6524c8403be1294c861557b077632 " zu laden, die Datei existiert aber nicht, da jedesmal eine andere ID (zend_cache---Zend_Paginator_1_ecc716fe6f51d3a1c7ce0692572c3be5) gespeichert wird... ein Bug?

    Diese beiden unterschiedlichen IDs wirft er mir auch aus:

    PHP-Code:
      public function getItemsByPage($pageNumber)
        {
            
    $pageNumber $this->normalizePageNumber($pageNumber);

            if (
    $this->_cacheEnabled()) {
                
    $data self::$_cache->load($this->_getCacheId($pageNumber));
                echo 
    $this->_getCacheId($pageNumber).'<br />';   // Danach sucht er (Zend_Paginator_1_cfe6524c8403be1294c861557b077632)

                
    if ($data !== false) {
                    return 
    $data;
                }
            }

    ...
    ...

            if (
    $this->_cacheEnabled()) {
                
    self::$_cache->save($items$this->_getCacheId($pageNumber), array($this->_getCacheInternalId()));
                echo 
    $this->_getCacheId($pageNumber).'<br />'// Das speichert er... (Zend_Paginator_1_ecc716fe6f51d3a1c7ce0692572c3be5)
            
    }

            return 
    $items;
        } 
    In der nachfolgenden Funktion wird ja die ID generiert, der Adapter scheint unterschiedlich zu sein und daher die verschiedenen IDs. Aber wie kann das sein?

    PHP-Code:
    protected function _getCacheInternalId()
        {
            return 
    md5(serialize(array(
                
    $this->getAdapter(),
                
    $this->getItemCountPerPage()
            )));

        } 
    Geändert von designkey (11.08.2012 um 15:09 Uhr)

  5. #4
    Benutzer
    Registriert seit
    11.04.2009
    Beiträge
    35
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Standard

    Hab das Problem erstmal provisorisch so gelöst, das ich eine eigene ID generiere. Jetzt klappt es einwandrei.
    Ist das wirklich ein Bug?

Ähnliche Themen

  1. Datenbankabfrage
    Von Heiko Mettelsiefen im Forum Einsteigerfragen
    Antworten: 4
    Letzter Beitrag: 23.07.2012, 16:05
  2. Antworten: 25
    Letzter Beitrag: 11.01.2011, 00:06
  3. Antworten: 4
    Letzter Beitrag: 07.11.2010, 15:57
  4. Datenbankabfrage wie ausgeben?
    Von cream im Forum Einsteigerfragen
    Antworten: 5
    Letzter Beitrag: 14.07.2009, 21:31
  5. Inhalt Datenbankabfrage/Array
    Von miko im Forum Einsteigerfragen
    Antworten: 3
    Letzter Beitrag: 23.05.2009, 12:25

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •