欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

ecshop改了模板类使用memcached之后如何判断调用成功

程序员文章站 2024-01-16 17:31:46
...
ecshop改了模板类使用memcached之后怎么判断调用成功?
问题就是这样,
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;
}
}

------解决思路----------------------
你查下数据不就行了
ecshop改了模板类使用memcached之后如何判断调用成功

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频