モノノフ日記

普通の日記です

sfMemcachePluginでcacheのlifetimeが有効になってなかったので修正した

symfony 1.1からはデフォルトで対応してるmemcachedですが、1.0.XはsfMemcachePluginというプラグインを利用して使います。
導入方法については下記ページを参照してください。

sfMemcachePluginを使ってて、どーもcacheのlifetimeが有効になってないみたいだったので少しソースを見ていじってみました。

plugins/sfMemcachePlugin/lib/sfMemcacheCache.class.php 146〜149行目あたり
<?php
  if (!isset(self::$mem[$this->bucket]))
    throw new Exception ('This bucket was not setup correctly');
-  if (!self::$mem[$this->bucket]->set ($path.$file, $std))
+  if (!self::$mem[$this->bucket]->set ($path.$file, $std, false, $this->lifeTime))
    throw new Exception ('Could not save in memcache');

sfMemcacheCacheクラスはsfFileCacheクラスを継承してるので、ファイルキャッシュ用に設定してあるメンバ変数のlifeTimeが取れます。それを利用すればyamlに書いてある設定がそのまま使えました。

ちなみに1.1のソースはsfCacheクラスから継承して、memcache用にキレイに書き直されてました。