ホームページ > バックエンド開発 > PHPチュートリアル > ecshop が memcached を使用するようにテンプレート クラスを変更した後、呼び出しが成功したかどうかを確認するにはどうすればよいですか?

ecshop が memcached を使用するようにテンプレート クラスを変更した後、呼び出しが成功したかどうかを確認するにはどうすればよいですか?

WBOY
リリース: 2016-06-23 13:43:43
オリジナル
1051 人が閲覧しました

問題は次のとおりです。
function fetch
function is_cached
これら 2 つの関数部分を変更した後、
ecshop 自体はエラーを報告しませんが、ecshop のキャッシュ呼び出しが成功したかどうかはまだわかりません。親指を立ててください。ヘルプ。

/**     * 处理模板文件     *     * @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 , '<?php exit;?>' . $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'] < $stat['mtime'])                    {                        $this->caching = false;                        return false;                    }                }            }            else            {                $this->caching = false;                return false;            }            return true;        }        else        {            return false;        }    }
ログイン後にコピー


ディスカッションに返信(解決策)

ちなみに、cls_template.php ファイル内の関数です

データを確認してください

ecshop 缓存 分类信息 失效时间 1小时需要修改的文件 category.php$memcache->set($cache_var , $data , 0, 3600);				|			|		|	|				key			数据	压缩	失效时间(秒)				自行替换 /** * 获得分类的信息 * * @param   integer $cat_id * * @return  voidfunction get_cat_info($cat_id){	return $GLOBALS['db']->getRow('SELECT cat_name, keywords, cat_desc, style, grade, filter_attr, parent_id FROM ' . $GLOBALS['ecs']->table('category') .		" WHERE cat_id = '$cat_id'");}*///mem缓存分类function get_cat_info($cat_id){	$memcache = new Memcache;	$memcache->connect("127.0.0.1", 11211);	$cache_var = 'men_category_info_'.$cat_id;	$data = $memcache->get($cache_var);		if($data === false){		$data = $GLOBALS['db']->getRow('SELECT cat_name, keywords, cat_desc, style, grade, filter_attr, parent_id FROM ' . $GLOBALS['ecs']->table('category') .				" WHERE cat_id = '$cat_id'");		$memcache->set($cache_var , $data , 0, 3600);		return $data;	}else{		return $data;	}}
ログイン後にコピー


これで解決しました。ありがとうございます。

同じように処理するファイルが複数あります
変更したファイルを変更します include/cls_template.php
書き換える必要があるファイル include/lib_base.php
変更する必要があるファイル category.php

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート