<?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%2FSmarty%2FRedis%E3%82%AF%E3%83%A9%E3%82%B9</id>
	<title>Php/Smarty/Redisクラス - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.nonip.net/index.php?action=history&amp;feed=atom&amp;title=Php%2FSmarty%2FRedis%E3%82%AF%E3%83%A9%E3%82%B9"/>
	<link rel="alternate" type="text/html" href="https://wiki.nonip.net/index.php?title=Php/Smarty/Redis%E3%82%AF%E3%83%A9%E3%82%B9&amp;action=history"/>
	<updated>2026-05-01T09:13:46Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.nonip.net/index.php?title=Php/Smarty/Redis%E3%82%AF%E3%83%A9%E3%82%B9&amp;diff=876&amp;oldid=prev</id>
		<title>127.0.0.1: ページの作成:「 &lt;?php  /**   * SmartyRedis   *   * @ex   * require_once &#039;SmartyRedis.php&#039;;   * $redis = new SmartyRedis();   * $redis-&gt;connect(&#039;localhost&#039;, 6379);   * $redis-&gt;setPrefix(...」</title>
		<link rel="alternate" type="text/html" href="https://wiki.nonip.net/index.php?title=Php/Smarty/Redis%E3%82%AF%E3%83%A9%E3%82%B9&amp;diff=876&amp;oldid=prev"/>
		<updated>2015-05-19T18:18:30Z</updated>

		<summary type="html">&lt;p&gt;ページの作成:「 &amp;lt;?php  /**   * SmartyRedis   *   * @ex   * require_once &amp;#039;SmartyRedis.php&amp;#039;;   * $redis = new SmartyRedis();   * $redis-&amp;gt;connect(&amp;#039;localhost&amp;#039;, 6379);   * $redis-&amp;gt;setPrefix(...」&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt; &amp;lt;?php&lt;br /&gt;
 /**&lt;br /&gt;
  * SmartyRedis&lt;br /&gt;
  *&lt;br /&gt;
  * @ex&lt;br /&gt;
  * require_once &amp;#039;SmartyRedis.php&amp;#039;;&lt;br /&gt;
  * $redis = new SmartyRedis();&lt;br /&gt;
  * $redis-&amp;gt;connect(&amp;#039;localhost&amp;#039;, 6379);&lt;br /&gt;
  * $redis-&amp;gt;setPrefix(&amp;#039;CACHE1&amp;#039;);&lt;br /&gt;
  * $smarty = new Smarty();&lt;br /&gt;
  * $smarty-&amp;gt;caching = 1;&lt;br /&gt;
  * $smarty-&amp;gt;cache_handler_func = array($redis, &amp;#039;cacheHandler&amp;#039;);&lt;br /&gt;
  */&lt;br /&gt;
 class SmartyRedis&lt;br /&gt;
 {&lt;br /&gt;
  var $_m;&lt;br /&gt;
  function SmartyRedis()&lt;br /&gt;
  {&lt;br /&gt;
    // ref to the redis object&lt;br /&gt;
    $this-&amp;gt;_m = new Redis();&lt;br /&gt;
  }&lt;br /&gt;
  function connect($host, $port)&lt;br /&gt;
  {&lt;br /&gt;
    $this-&amp;gt;_m-&amp;gt;connect($host, $port);&lt;br /&gt;
  }&lt;br /&gt;
  function setPrefix($prefix)&lt;br /&gt;
  {&lt;br /&gt;
    $this-&amp;gt;_m-&amp;gt;setOption(Redis::OPT_PREFIX, $prefix);&lt;br /&gt;
  }&lt;br /&gt;
  function cacheHandler($action, &amp;amp;$smarty_obj, &amp;amp;$cache_content, $tpl_file = null, $cache_id = null, $compile_id = null, $exp_time = null)&lt;br /&gt;
  {&lt;br /&gt;
    // the key to store cache_ids under, used for clearing&lt;br /&gt;
    $key = &amp;#039;smarty_caches&amp;#039;;&lt;br /&gt;
    // check redis object&lt;br /&gt;
    if (get_class($this-&amp;gt;_m) != &amp;#039;Redis&amp;#039;) {&lt;br /&gt;
          $smarty_obj-&amp;gt;trigger_error(&amp;quot;redis_cache_handler: \&amp;quot;$this-&amp;gt;_m\&amp;quot; is not a redisd object&amp;quot;);&lt;br /&gt;
      return false;&lt;br /&gt;
    }&lt;br /&gt;
    // unique cache id&lt;br /&gt;
    $cache_id = md5($tpl_file . $cache_id . $compile_id);&lt;br /&gt;
    switch ($action) {&lt;br /&gt;
    case &amp;#039;read&amp;#039;:&lt;br /&gt;
      // grab the key from redisd&lt;br /&gt;
      $contents = $this-&amp;gt;_m-&amp;gt;get($cache_id);&lt;br /&gt;
      // use compression&lt;br /&gt;
      if ($smarty_obj-&amp;gt;use_gzip &amp;amp;&amp;amp; function_exists(&amp;quot;gzuncompress&amp;quot;)) {&lt;br /&gt;
        $cache_content = gzuncompress($contents);&lt;br /&gt;
      } else {&lt;br /&gt;
        $cache_content = $contents;&lt;br /&gt;
      }&lt;br /&gt;
      $return = true;&lt;br /&gt;
      break;&lt;br /&gt;
    case &amp;#039;write&amp;#039;:&lt;br /&gt;
      // use compression&lt;br /&gt;
      if ($smarty_obj-&amp;gt;use_gzip &amp;amp;&amp;amp; function_exists(&amp;quot;gzcompress&amp;quot;)) {&lt;br /&gt;
        $contents = gzcompress($cache_content);&lt;br /&gt;
      } else {&lt;br /&gt;
        $contents = $cache_content;&lt;br /&gt;
      }&lt;br /&gt;
      // add the cache_id to the $key string&lt;br /&gt;
      $caches = $this-&amp;gt;_m-&amp;gt;get($key);&lt;br /&gt;
      if (!is_array($caches)) {&lt;br /&gt;
        $caches = array($cache_id);&lt;br /&gt;
        $this-&amp;gt;_m-&amp;gt;set($key, $caches);&lt;br /&gt;
      } else if (!in_array($cache_id, $caches)) {&lt;br /&gt;
        array_push($caches, $cache_id);&lt;br /&gt;
        $this-&amp;gt;_m-&amp;gt;set($key, $caches);&lt;br /&gt;
      }&lt;br /&gt;
      // store the value in redisd&lt;br /&gt;
      $stored = $this-&amp;gt;_m-&amp;gt;set($cache_id, $contents);&lt;br /&gt;
      if (!$stored) {&lt;br /&gt;
        $smarty_obj-&amp;gt;trigger_error(&amp;quot;redis_cache_handler: set failed.&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      $return = true;&lt;br /&gt;
      break;&lt;br /&gt;
    case &amp;#039;clear&amp;#039;:&lt;br /&gt;
      if (empty($cache_id) &amp;amp;&amp;amp; empty($compile_id) &amp;amp;&amp;amp; empty($tpl_file)) {&lt;br /&gt;
        // get all cache ids&lt;br /&gt;
        $caches = $this-&amp;gt;_m-&amp;gt;get($key);&lt;br /&gt;
        if (is_array($caches)) {&lt;br /&gt;
          $len = count($caches);&lt;br /&gt;
          for ($i = 0; $i &amp;lt; $len; $i++) {&lt;br /&gt;
            // assume no errors&lt;br /&gt;
            $this-&amp;gt;_m-&amp;gt;delete($caches[$i]);&lt;br /&gt;
          }&lt;br /&gt;
          // delete the cache ids&lt;br /&gt;
          $this-&amp;gt;_m-&amp;gt;delete($key);&lt;br /&gt;
          $result = true;&lt;br /&gt;
        }&lt;br /&gt;
      } else {&lt;br /&gt;
        $result = $this-&amp;gt;_m-&amp;gt;delete($cache_id);&lt;br /&gt;
      }&lt;br /&gt;
      if (!$result) {&lt;br /&gt;
        $smarty_obj-&amp;gt;trigger_error(&amp;quot;redis_cache_handler: clear query failed.&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
      $return = true;&lt;br /&gt;
      break;&lt;br /&gt;
    default:&lt;br /&gt;
      // error, unknown action&lt;br /&gt;
      $smarty_obj-&amp;gt;trigger_error(&amp;quot;redis_cache_handler: unknown action \&amp;quot;$action\&amp;quot;&amp;quot;);&lt;br /&gt;
      $return = false;&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
    return $return;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;/div&gt;</summary>
		<author><name>127.0.0.1</name></author>
	</entry>
</feed>