ecshop改了模板类使用memcached之后如何判断调用成功
程序员文章站
2024-01-16 17:31:46
...
ecshop改了模板类使用memcached之后怎么判断调用成功?
问题就是这样,
function fetch
function is_cached
改了这两个函数部分
ecshop 自身是不报错了,但是现在就是不知道 ecshop 对缓存调用 成功不?请各位大大pp。help。
------解决思路----------------------
你查下数据不就行了
问题就是这样,
function fetch
function is_cached
改了这两个函数部分
ecshop 自身是不报错了,但是现在就是不知道 ecshop 对缓存调用 成功不?请各位大大pp。help。
/**
* 处理模板文件
*
* @access public
* @param string $filename
* @param sting $cache_id
*
* @return sring
*/
function fetch($filename, $cache_id = '')
{
if (!$this->_seterror)
{
error_reporting(E_ALL ^ E_NOTICE);
}
$this->_seterror++;
if (strncmp($filename,'str:', 4) == 0)
{
$out = $this->_eval($this->fetch_str(substr($filename, 4)));
}
else
{
if ($this->_checkfile)
{
if (!file_exists($filename))
{
$filename = $this->template_dir . '/' . $filename;
}
}
else
{
$filename = $this->template_dir . '/' . $filename;
}
if ($this->direct_output)
{
$this->_current_file = $filename;
$out = $this->_eval($this->fetch_str(file_get_contents($filename)));
}
else
{
if ($cache_id && $this->caching)
{
$out = $this->template_out;
}
else
{
if (!in_array($filename, $this->template))
{
$this->template[] = $filename;
}
$out = $this->make_compiled($filename);
if ($cache_id)
{
$cachename = basename($filename, strrchr($filename, '.')) . '_' . $cache_id;
$data = serialize(array('template' => $this->template, 'expires' => $this->_nowtime + $this->cache_lifetime, 'maketime' => $this->_nowtime));
$out = str_replace("\r", '', $out);
$memcache = new Memcache;
$memcache->connect("127.0.0.1", 11211);
$CacheID = md5($filename.$cache_id.$cachename);
while (strpos($out, "\n\n") !== false)
{
$out = str_replace("\n\n", "\n", $out);
}
$memcache->set($CacheID , '' . $data . $out , 3600);
$this->template = array();
}
}
}
}
$this->_seterror--;
if (!$this->_seterror)
{
error_reporting($this->_errorlevel);
}
return $out; // 返回html数据
}
/**
* 判断是否缓存
*
* @access public
* @param string $filename
* @param sting $cache_id
*
* @return bool
*/
function is_cached($filename, $cache_id = '')
{
$cachename = basename($filename, strrchr($filename, '.')) . '_' . $cache_id;
$memcache = new Memcache;
$memcache->connect("127.0.0.1", 11211);
$CacheID = md5($filename.$cache_id.$cachename);
if ($this->caching == true && $this->direct_output == false)
{
if ($data = $memcache->get($CacheID))
{
$data = substr($data, 13);
$pos = strpos($data, ' $paradata = substr($data, 0, $pos);
$para = @unserialize($paradata);
if ($para === false || $this->_nowtime > $para['expires'])
{
$this->caching = false;
return false;
}
$this->_expires = $para['expires'];
$this->template_out = substr($data, $pos);
foreach ($para['template'] AS $val)
{
$stat = @stat($val);
if ($para['maketime'] {
$this->caching = false;
return false;
}
}
}
else
{
$this->caching = false;
return false;
}
return true;
}
else
{
return false;
}
}
------解决思路----------------------
你查下数据不就行了
相关文章
相关视频
上一篇: yii框架,该怎么处理