Skip to content

A Propel ORM behavior that provide auto data caching to your model. Port to Propel2 of snakano/propel-data-cache-behavior.

Notifications You must be signed in to change notification settings

Upinion/propel2-data-cache-behavior

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Data Cache Behavior for Propel2

Build Status Latest Stable Version Total Downloads

A Propel ORM behavior that provide auto data caching to your model. Based on Propel 1.6 work of SNakano.

  • support caching system APC, memcached and Redis (via DoctrineCache)
  • auto caching and auto flush.

What's the difference with Query Cache Behavior

Query Cache Behavior is caching transformation of a query object (caching SQL code). This Behavior is caching the results of database. (caching result data)

Requirements

Install

Composer

Add a dependency on thefuriouscoder/propel2-data-cache-behavior to your project's composer.json file.

{
    "require": {
        "thefuriouscoder/propel2-data-cache-behavior": "dev-master"
    }
}

Configuration

schema.xml

<table name="book">
  <column name="id" required="true" primaryKey="true" autoIncrement="true" type="INTEGER" />
  <column name="title" type="VARCHAR" required="true" primaryString="true" />
  <behavior name="data_cache">
    <parameter name="backend" value="apc" />     <!-- cache system. "apc" or "memcache", default "apc". (optional) -->
    <parameter name="lifetime" value="3600" />   <!-- cache expire time (second). default 3600 (optional) -->
    <parameter name="auto_cache" value="true" /> <!-- auto cache enable. default true (optional) -->
  </behavior>
</table>

Initialize the Cache Store.

Add the following configuration code to your project bootstraping file depending on the storage you are goinng to use.

Using Memcached (php5-memcached extension needed)

// configure memcached setting.
TFC\Cache\DoctrineCacheFactory::setOption(
    array(
        'storage'     => 'memcached',
        'prefix'      => 'rlyeh',
        'default_ttl' => 3600,
        'servers'     => array(
            array('server1', 11211, 20),
            array('server2', 11211, 80)
        )
    )
);

Using APC

// configure APC setting.
TFC\Cache\DoctrineCacheFactory::setOption(
    array(
        'storage'     => 'apc',
        'default_ttl' => 3600
    )
);

Using Redis

// configure Redis setting.
TFC\Cache\DoctrineCacheFactory::setOption(
    array(
        'storage'     => 'redis',
        'prefix'      => 'rlyeh',
        'host         => '127.0.0.1',
        'port'        => 6379,
        'default_ttl' => 3600
    )
);

Basic usage

$title = 'Cthulhu Mythos';
BookQuery::create()
    ->filterByTitle($title)
    ->findOne(); // from Database

BookQuery::create()
    ->filterByTitle($title)
    ->findOne(); // from caching system

Disable cache

$title = 'Cthulhu Mythos';
BookQuery::create()
    ->setCacheDisable()  // disable cache
    ->filterByTitle($title)
    ->findOne();
  • setCacheEnable()
  • setCacheDisable()
  • isCacheEnable()
  • setLifetime($ttl)

When cache delete?

$book = new Book;
$book->setId(1);
$book->setTitle("Cthulhu Myhtos");
$book->save();  // purge cache.
  • expire cache lifetime.
  • call save() method.
  • call delete() method.
  • call BookQuery::doDeleteAll() method.
  • call BookQuery::purgeCache() method.

Manually delete cache.

$title = 'Cthulhu Mythos';
$query = BookQuery::create();
$book  = $query->filterByTitle($title)->findOne();
$cacheKey = $query->getCacheKey(); // get cache key.

BookPeer::cacheDelete($cacheKey);  // delete cache by key.

License

MIT License

About

A Propel ORM behavior that provide auto data caching to your model. Port to Propel2 of snakano/propel-data-cache-behavior.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PHP 100.0%