ecshop が memcached を使用するようにテンプレート クラスを変更した後、呼び出しが成功したかどうかを確認するにはどうすればよいですか?
問題は次のようなものです。
function fetch
function is_cached
これら 2 つの関数部分を変更した後、
ecshop 自体はエラーを報告しませんが、今では ecshop のキャッシュ呼び出しかどうかはわかりません成功していますか?親指を立ててください。ヘルプ。
<br />/**<br /> * 处理模板文件<br /> *<br /> * @access public<br /> * @param string $filename<br /> * @param sting $cache_id<br /> *<br /> * @return sring<br /> */<br /> function fetch($filename, $cache_id = '')<br /> {<br /> if (!$this->_seterror)<br /> {<br /> error_reporting(E_ALL ^ E_NOTICE);<br /> }<br /> $this->_seterror++;<br /><br /> if (strncmp($filename,'str:', 4) == 0)<br /> {<br /> $out = $this->_eval($this->fetch_str(substr($filename, 4)));<br /> }<br /> else<br /> {<br /> if ($this->_checkfile)<br /> {<br /> if (!file_exists($filename))<br /> {<br /> $filename = $this->template_dir . '/' . $filename;<br /> }<br /> }<br /> else<br /> {<br /> $filename = $this->template_dir . '/' . $filename;<br /> }<br /><br /> if ($this->direct_output)<br /> {<br /> $this->_current_file = $filename;<br /><br /> $out = $this->_eval($this->fetch_str(file_get_contents($filename)));<br /> }<br /> else<br /> {<br /> if ($cache_id && $this->caching)<br /> {<br /> $out = $this->template_out;<br /> }<br /> else<br /> {<br /> if (!in_array($filename, $this->template))<br /> {<br /> $this->template[] = $filename;<br /> }<br /><br /> $out = $this->make_compiled($filename);<br /><br /> if ($cache_id)<br /> {<br /> $cachename = basename($filename, strrchr($filename, '.')) . '_' . $cache_id;<br /> $data = serialize(array('template' => $this->template, 'expires' => $this->_nowtime + $this->cache_lifetime, 'maketime' => $this->_nowtime));<br /> $out = str_replace("\r", '', $out);<br /> <br /> $memcache = new Memcache;<br /> $memcache->connect("127.0.0.1", 11211);<br /> $CacheID = md5($filename.$cache_id.$cachename);<br /><br /> while (strpos($out, "\n\n") !== false)<br /> {<br /> $out = str_replace("\n\n", "\n", $out);<br /> }<br /> <br /> $memcache->set($CacheID , '<?php exit;?>' . $data . $out , 3600);<br /> <br /> $this->template = array();<br /> }<br /> }<br /> }<br /> }<br /><br /> $this->_seterror--;<br /> if (!$this->_seterror)<br /> {<br /> error_reporting($this->_errorlevel);<br /> }<br /><br /> return $out; // 返回html数据<br /> }<br />
<br />/**<br /> * 判断是否缓存<br /> *<br /> * @access public<br /> * @param string $filename<br /> * @param sting $cache_id<br /> *<br /> * @return bool<br /> */<br /> function is_cached($filename, $cache_id = '')<br /> {<br /> $cachename = basename($filename, strrchr($filename, '.')) . '_' . $cache_id;<br /> <br /> $memcache = new Memcache;<br /> $memcache->connect("127.0.0.1", 11211);<br /> $CacheID = md5($filename.$cache_id.$cachename);<br /> <br /> if ($this->caching == true && $this->direct_output == false)<br /> {<br /> if ($data = $memcache->get($CacheID))<br /> {<br /> $data = substr($data, 13);<br /> $pos = strpos($data, '<');<br /> $paradata = substr($data, 0, $pos);<br /> $para = @unserialize($paradata);<br /> if ($para === false || $this->_nowtime > $para['expires'])<br /> {<br /> $this->caching = false;<br /><br /> return false;<br /> }<br /> $this->_expires = $para['expires'];<br /><br /> $this->template_out = substr($data, $pos);<br /><br /> foreach ($para['template'] AS $val)<br /> {<br /> $stat = @stat($val);<br /> if ($para['maketime'] < $stat['mtime'])<br /> {<br /> $this->caching = false;<br /><br /> return false;<br /> }<br /> }<br /> }<br /> else<br /> {<br /> $this->caching = false;<br /><br /> return false;<br /> }<br /><br /> return true;<br /> }<br /> else<br /> {<br /> return false;<br /> }<br /> }<br />