Lokale "Cache" voor subklassen Zend_Db_Row

In onze applicatie gebruiken we subklassen van Zend_Db_Row om objecten in onze applicatie weer te geven. deze objecten worden geretourneerd door verschillende ophaalfuncties.

<?php
require_once 'Zend/Db.php';

class Model_Users extends Zend_Db_Table_Abstract
{
    protected $_name = 'users';
    protected $_primary = 'userId';
    protected $_rowClass = 'Model_User';

    /**
     * fetch user by email
     * 
     * @param string $email
     */
    public function fetchWithEmail($email)
    {
        $select = $this->select();
        $select->where('email = ?', $email);
        return $this->fetchRow($select);
    }

}

The issue is that we call the fetch functions multiple times (with the same values) from different functions, models, controllers and such. so for example, $modelUsers->fetchWithEmail('[email protected]') appears 10 times in a single PHP script execution.

We zijn van plan om memcached te gebruiken voor het cachen van deze objecten, maar hij zou de cache-server nog 10 keer bellen (in plaats van 10 keer de database te bellen). het gebruik van memcache zal sneller zijn, maar we willen de cache-server slechts eenmaal bellen (in plaats van 10 keer)

Any framework/module of zend framework that can help us archive some kind of local cache? That if our script will call $modelUsers->fetchWithEmail('[email protected]'), it would enter the script memory until the script execution was completed (or either an update or delete function changed the value of that row in the database)

3

2 antwoord

Zend_Cache would work, and you could use Apc, Memcache, Flat files, etc.

1
toegevoegd

Doctrine ORM implementeert EntityManager.

De EntityManager API wordt gebruikt om de persistentie van uw objecten te beheren en om te zoeken naar persistente objecten.

http: //www.doctrine-project org/docs/orm/2,1/nl/referentie/architecture.html # the-EntityManager

1
toegevoegd
Ik heb dat ook van een collega gehoord en het ziet er interessant uit, maar onze hele applicatie is al gebaseerd op Zend_Db.
toegevoegd de auteur aporat, de bron