<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
		<id>https://wiki.nonip.net/index.php?action=history&amp;feed=atom&amp;title=Php%2Fzend_framework%2FDB%E3%83%A2%E3%83%87%E3%83%AB%E3%82%92%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E5%8C%96</id>
		<title>Php/zend framework/DBモデルをキャッシュ化 - 変更履歴</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.nonip.net/index.php?action=history&amp;feed=atom&amp;title=Php%2Fzend_framework%2FDB%E3%83%A2%E3%83%87%E3%83%AB%E3%82%92%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E5%8C%96"/>
		<link rel="alternate" type="text/html" href="https://wiki.nonip.net/index.php?title=Php/zend_framework/DB%E3%83%A2%E3%83%87%E3%83%AB%E3%82%92%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E5%8C%96&amp;action=history"/>
		<updated>2026-04-24T19:54:49Z</updated>
		<subtitle>このウィキのこのページに関する変更履歴</subtitle>
		<generator>MediaWiki 1.24.2</generator>

	<entry>
		<id>https://wiki.nonip.net/index.php?title=Php/zend_framework/DB%E3%83%A2%E3%83%87%E3%83%AB%E3%82%92%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E5%8C%96&amp;diff=761&amp;oldid=prev</id>
		<title>127.0.0.1: ページの作成:「*/application/configs/cache.ini  [production]  ; キャッシュサーバ設定  memcached.servers.0.host = localhost  memcached.servers.0.port = 11211  memcached.servers...」</title>
		<link rel="alternate" type="text/html" href="https://wiki.nonip.net/index.php?title=Php/zend_framework/DB%E3%83%A2%E3%83%87%E3%83%AB%E3%82%92%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E5%8C%96&amp;diff=761&amp;oldid=prev"/>
				<updated>2015-05-19T18:16:50Z</updated>
		
		<summary type="html">&lt;p&gt;ページの作成:「*/application/configs/cache.ini  [production]  ; キャッシュサーバ設定  memcached.servers.0.host = localhost  memcached.servers.0.port = 11211  memcached.servers...」&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;*/application/configs/cache.ini&lt;br /&gt;
 [production]&lt;br /&gt;
 ; キャッシュサーバ設定&lt;br /&gt;
 memcached.servers.0.host = localhost&lt;br /&gt;
 memcached.servers.0.port = 11211&lt;br /&gt;
 memcached.servers.0.weight = 100&lt;br /&gt;
 ; 全体キャッシュ有効期限秒&lt;br /&gt;
 memcached.lifetime = 7200&lt;br /&gt;
 ; 全体キャッシュ使用有無&lt;br /&gt;
 memcached.cache.use = TRUE&lt;br /&gt;
 ; 全体キャッシュ名頭文字&lt;br /&gt;
 memcached.cache.idPrefix = MEM1_&lt;br /&gt;
 ; DBキャッシュ有効期限秒&lt;br /&gt;
 memcached.db.lifetime = 7200&lt;br /&gt;
 ; DBキャッシュ使用有無(全体キャッシュ使用有無がTRUEのとき有効&lt;br /&gt;
 memcached.db.cache.use = TRUE&lt;br /&gt;
 ; DBキャッシュ名頭文字(全体キャッシュ依存&lt;br /&gt;
 memcached.db.cache.idPrefix = DB_&lt;br /&gt;
 &lt;br /&gt;
 [staging : production]&lt;br /&gt;
 &lt;br /&gt;
 [testing : production]&lt;br /&gt;
 &lt;br /&gt;
 [development : production]&lt;br /&gt;
&lt;br /&gt;
*/application/models/MemcachedModel.php&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 /**&lt;br /&gt;
  * memcachedモデルクラス&lt;br /&gt;
  */&lt;br /&gt;
 class MemcachedModel&lt;br /&gt;
 {&lt;br /&gt;
     // キャッシュインスタンス&lt;br /&gt;
     private $_cache = NULL;&lt;br /&gt;
     // キャッシュ使用フラグ&lt;br /&gt;
     private $_cacheUse = TRUE;&lt;br /&gt;
     // キャッシュIDプレフィックス&lt;br /&gt;
     private $_cacheIdPrefix = NULL;&lt;br /&gt;
     /**&lt;br /&gt;
      * constructor&lt;br /&gt;
      */&lt;br /&gt;
     public function __construct()&lt;br /&gt;
     {&lt;br /&gt;
         // 外部iniをロードしZend_Configオブジェクトを生成&lt;br /&gt;
         $config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/cache.ini', APPLICATION_ENV);&lt;br /&gt;
         // キャッシュ使用フラグ&lt;br /&gt;
         $this-&amp;gt;_cacheUse = $config-&amp;gt;memcached-&amp;gt;cache-&amp;gt;use;&lt;br /&gt;
         // キャッシュプレフィックスID&lt;br /&gt;
         $this-&amp;gt;_cacheIdPrefix = $config-&amp;gt;memcached-&amp;gt;cache-&amp;gt;idPrefix;&lt;br /&gt;
         &lt;br /&gt;
         // FrontEnd に関する設定&lt;br /&gt;
         $frontendOptions = array(&lt;br /&gt;
             'lifetime' =&amp;gt; $config-&amp;gt;memcached-&amp;gt;lifetime, //7200, // キャッシュの有効期限を 2 時間とする&lt;br /&gt;
             'automatic_serialization' =&amp;gt; TRUE,&lt;br /&gt;
             'cache_id_prefix' =&amp;gt; $this-&amp;gt;_cacheIdPrefix&lt;br /&gt;
         );&lt;br /&gt;
         // BackEndに関する設定&lt;br /&gt;
         $backendOptions = array(&lt;br /&gt;
             'servers' =&amp;gt; array( // memcached の設定にあわせる&lt;br /&gt;
                          array(&lt;br /&gt;
                              'host'       =&amp;gt; $config-&amp;gt;memcached-&amp;gt;servers-&amp;gt;{0}-&amp;gt;host, //'localhost',&lt;br /&gt;
                              'port'       =&amp;gt; $config-&amp;gt;memcached-&amp;gt;servers-&amp;gt;{0}-&amp;gt;port, //11211,&lt;br /&gt;
                              'persistent' =&amp;gt; TRUE&lt;br /&gt;
                          )&lt;br /&gt;
                      )&lt;br /&gt;
         );&lt;br /&gt;
         // キャッシュオブジェクトを生成&lt;br /&gt;
         $this-&amp;gt;_cache      = Zend_Cache::factory('Output', 'Memcached', $frontendOptions, $backendOptions);&lt;br /&gt;
     }&lt;br /&gt;
     /**&lt;br /&gt;
      * キャッシュ設定&lt;br /&gt;
      */&lt;br /&gt;
     public function setCache($key, $value, $tags = array(), $specificLifetime = false)&lt;br /&gt;
     {&lt;br /&gt;
         if ($this-&amp;gt;_cacheUse == FALSE) return FALSE;&lt;br /&gt;
         $result = $this-&amp;gt;_cache-&amp;gt;save($value, $key, $tags, $specificLifetime);&lt;br /&gt;
         if (!$result) {&lt;br /&gt;
             // cache error&lt;br /&gt;
         }&lt;br /&gt;
         return $result;&lt;br /&gt;
     }&lt;br /&gt;
     /**&lt;br /&gt;
      * キャッシュ取得&lt;br /&gt;
      */&lt;br /&gt;
     public function getCache($key)&lt;br /&gt;
     {&lt;br /&gt;
         if ($this-&amp;gt;_cacheUse == FALSE) return FALSE;&lt;br /&gt;
         if (($result = $this-&amp;gt;_cache-&amp;gt;load($key))) {&lt;br /&gt;
             return $result;&lt;br /&gt;
         }&lt;br /&gt;
     }&lt;br /&gt;
     /**&lt;br /&gt;
      * キャッシュ削除&lt;br /&gt;
      */&lt;br /&gt;
     public function delCache($key)&lt;br /&gt;
     {&lt;br /&gt;
         if ($this-&amp;gt;_cacheUse == FALSE) return FALSE;&lt;br /&gt;
         $this-&amp;gt;_cache-&amp;gt;remove($key);&lt;br /&gt;
     }&lt;br /&gt;
     /**&lt;br /&gt;
      * キャッシュ全削除&lt;br /&gt;
      */&lt;br /&gt;
     public function cleanCache($tags = array())&lt;br /&gt;
     {&lt;br /&gt;
         if ($this-&amp;gt;_cacheUse == FALSE) return FALSE;&lt;br /&gt;
         $this-&amp;gt;_cache-&amp;gt;clean(Zend_Cache::CLEANING_MODE_ALL, $tags);&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
*/application/models/dao/AbstractDao.php&lt;br /&gt;
 &amp;lt;?php&lt;br /&gt;
 require_once APPLICATION_PATH . '/models/MemcachedModel.php';&lt;br /&gt;
 require_once APPLICATION_PATH . '/models/ConfigModel.php';&lt;br /&gt;
 /**&lt;br /&gt;
  * 基底Daoクラス&lt;br /&gt;
  */&lt;br /&gt;
 abstract class AbstractDao extends Zend_Db_Table_Abstract&lt;br /&gt;
 {&lt;br /&gt;
     // キャッシュインスタンス&lt;br /&gt;
     private $_cache = NULL;&lt;br /&gt;
     // キャッシュ使用フラグ&lt;br /&gt;
     private $_cacheUse = TRUE;&lt;br /&gt;
     // キャッシュIDプレフィックス&lt;br /&gt;
     private $_cacheIdPrefix = NULL;&lt;br /&gt;
     /**&lt;br /&gt;
      * キャッシュコネクション&lt;br /&gt;
      */&lt;br /&gt;
     public function createCacheConnection()&lt;br /&gt;
     {&lt;br /&gt;
         // 外部iniをロードしたZend_Configオブジェクトを取得（毎回取得すると重いのでシングルトンで取得&lt;br /&gt;
         $config = ConfigModel::getInstance(APPLICATION_PATH . '/configs/cache.ini', APPLICATION_ENV);&lt;br /&gt;
         // キャッシュ使用フラグ&lt;br /&gt;
         $this-&amp;gt;_cacheUse = $config-&amp;gt;memcached-&amp;gt;db-&amp;gt;cache-&amp;gt;use;&lt;br /&gt;
         // キャッシュ未使用時&lt;br /&gt;
         if ($this-&amp;gt;_cacheUse == FALSE) {&lt;br /&gt;
             return FALSE;&lt;br /&gt;
         }&lt;br /&gt;
         // キャッシュオブジェクトを生成&lt;br /&gt;
         $this-&amp;gt;_cache = new MemcachedModel();&lt;br /&gt;
         // キャッシュID&lt;br /&gt;
         $this-&amp;gt;_cacheIdPrefix = sprintf(&amp;quot;DB_%s_%s_&amp;quot;, $this-&amp;gt;_schema, $this-&amp;gt;_name);&lt;br /&gt;
     }&lt;br /&gt;
     /**&lt;br /&gt;
      * キャッシュ設定&lt;br /&gt;
      */&lt;br /&gt;
     public function setCache($key, $value)&lt;br /&gt;
     {&lt;br /&gt;
         if ($this-&amp;gt;_cacheUse == FALSE) return FALSE;&lt;br /&gt;
         $this-&amp;gt;_cache-&amp;gt;setCache($this-&amp;gt;_cacheIdPrefix . $key, $value, array($this-&amp;gt;_cacheIdPrefix));&lt;br /&gt;
     }&lt;br /&gt;
     /**&lt;br /&gt;
      * キャッシュ取得&lt;br /&gt;
      */&lt;br /&gt;
     public function getCache($key)&lt;br /&gt;
     {&lt;br /&gt;
         if ($this-&amp;gt;_cacheUse == FALSE) return FALSE;&lt;br /&gt;
         return $this-&amp;gt;_cache-&amp;gt;getCache($this-&amp;gt;_cacheIdPrefix . $key);&lt;br /&gt;
     }&lt;br /&gt;
     /**&lt;br /&gt;
      * キャッシュ削除&lt;br /&gt;
      */&lt;br /&gt;
     public function delCache($key)&lt;br /&gt;
     {&lt;br /&gt;
         if ($this-&amp;gt;_cacheUse == FALSE) return FALSE;&lt;br /&gt;
         return $this-&amp;gt;_cache-&amp;gt;delCache($this-&amp;gt;_cacheIdPrefix . $key);&lt;br /&gt;
     }&lt;br /&gt;
     /**&lt;br /&gt;
      * キャッシュ削除（by プレフィックス指定&lt;br /&gt;
      */&lt;br /&gt;
     public function cleanCache()&lt;br /&gt;
     {&lt;br /&gt;
         if ($this-&amp;gt;_cacheUse == FALSE) return FALSE;&lt;br /&gt;
         return $this-&amp;gt;_cache-&amp;gt;cleanCache(array($this-&amp;gt;_cacheIdPrefix));&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
*/application/models/dao/SamplesDao.php&lt;br /&gt;
 require_once dirname(__FILE__) . '/AbstractDao.php';&lt;br /&gt;
 // サンプルDao&lt;br /&gt;
 class SamplesDao extends AbstractDao&lt;br /&gt;
 {&lt;br /&gt;
   public function fetchRowById($id)&lt;br /&gt;
   {&lt;br /&gt;
     // キャッシュコネクション生成&lt;br /&gt;
     $this-&amp;gt;createCacheConnection();&lt;br /&gt;
     // キャッシュ取得&lt;br /&gt;
     $cache = $this-&amp;gt;getCache($id);&lt;br /&gt;
     if ($cache) {&lt;br /&gt;
       return $cache;&lt;br /&gt;
     }&lt;br /&gt;
     // 処理&lt;br /&gt;
     $where = $this-&amp;gt;getAdapter()-&amp;gt;quoteInto('id = ?', $id);&lt;br /&gt;
     $sample = $this-&amp;gt;fetchRow($where);&lt;br /&gt;
     // キャッシュ設定&lt;br /&gt;
     $this-&amp;gt;setCache($id, $sample);&lt;br /&gt;
   }&lt;br /&gt;
   public function updateById($id)&lt;br /&gt;
   {&lt;br /&gt;
     // 処理&lt;br /&gt;
     $where = $this-&amp;gt;getAdapter()-&amp;gt;quoteInto('id = ?', $id);&lt;br /&gt;
     $id = parent::update($data, $where);&lt;br /&gt;
     // キャッシュコネクション生成&lt;br /&gt;
     $this-&amp;gt;createCacheConnection();&lt;br /&gt;
     // キャッシュ削除&lt;br /&gt;
     $this-&amp;gt;delCache($id);&lt;br /&gt;
     return $id;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
*/application/models/ConfigModel.php&lt;br /&gt;
 /**&lt;br /&gt;
  * ConfigModel(シングルトン&lt;br /&gt;
  *&lt;br /&gt;
  * @ex&lt;br /&gt;
  * Zend_Config_IniをgetInstance()を用いて取得する&lt;br /&gt;
  * $config = ConfigModel::getInstance($path, $env);&lt;br /&gt;
  *&lt;br /&gt;
  * 毎回同じiniを読み込むと重いので、このクラス内にインスタンスを保存&lt;br /&gt;
  * Zend_Config_Iniを継承するとエラーとなったので、プロパティにZend_Config_Iniをそのまま入れた&lt;br /&gt;
  */&lt;br /&gt;
 class ConfigModel&lt;br /&gt;
 {&lt;br /&gt;
     private static $singleton = array();&lt;br /&gt;
     private function __construct()&lt;br /&gt;
     {&lt;br /&gt;
     }&lt;br /&gt;
     public static function getInstance($path, $env = NULL) {&lt;br /&gt;
         // クラス内保存用プロパティ名（ユニーク名）取得&lt;br /&gt;
         $name = md5($path . $env);&lt;br /&gt;
         // list($name, $dammy) = explode('.', basename($path));&lt;br /&gt;
         if (!array_key_exists($name, self::$singleton)) {&lt;br /&gt;
             // Zendコンフィグインスタンス取得&lt;br /&gt;
             self::$singleton[$name] = new Zend_Config_Ini($path, $env);&lt;br /&gt;
         }&lt;br /&gt;
         return self::$singleton[$name];&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>127.0.0.1</name></author>	</entry>

	</feed>