• CanPHP在模板文件中调用模块方法

    默认在模板文件中只能接受调用方法传过来的参数,需要调用模块(module)方法的话,对框架中的cpTemplate文件进行一些修改就很方便了,使用方法与开发文档中相同。
    修改 CanPHP/core/cpTemplate.class.php 添加模块调用方法,使前台模板中可以调用指定模块中的方法
    ///查看 CanPHP/lib/common.function.php

    //模块之间相互调用

    public function  module($module)
    {
        static $module_obj=array();
        static $config=array();
        if(isset($module_obj[$module]))
        {
            return $module_obj[$module];
        }
        if(!isset($config['MODULE_PATH']))
        {
            $config['MODULE_PATH']=cpConfig::get('MODULE_PATH');
            $config['MODULE_SUFFIX']=cpConfig::get('MODULE_SUFFIX');
            $suffix_arr=explode('.',$config['MODULE_SUFFIX'],2);
            $config['MODULE_CLASS_SUFFIX']=$suffix_arr[0];
        }
        if(file_exists($config['MODULE_PATH'].$module.$config['MODULE_SUFFIX']))
        {
                require_once($config['MODULE_PATH'].$module.$config['MODULE_SUFFIX']);//加载模型文件
                $classname=$module.$config['MODULE_CLASS_SUFFIX'];
                if(class_exists($classname))
                {
                    return  $module_obj[$module]=new $classname();
                }
        }
        return false;

    }

    ——————–补充——————————–
    修改cpTemplate 文件之后,导致其他方法重新加载是网站出现异常 状况记录
    。LANG::get()  多语言中的cookie 重设问题,修改lib/Lang.class.php 中85行附近的setcookie 代码,添加if 判断

    if($_COOKIE['cp_language'] != $lang) setcookie('cp_language',$lang,time()+3600*24*365,'/');

    ———————待完善———————–

  • memcache 入门一

    php 使用memcache 将变量存储到内存中以加快程序运行速度,要使用memcache 需要先安装配置对应的模块,使用memcache不需要像session那样在实现多主机共享时进行负责的控制判断,实时性高效的memcache让分布 式架构处理共享信息更轻松。先看一个官网的实例吧

     
    $memcache = new Memcache;
    $memcache->connect('localhost', 11211) or die ("Could not connect");
     
    $version = $memcache->getVersion();
    echo "Server's version: ".$version."
    \n";
     
    $tmp_object = new stdClass;
    $tmp_object->str_attr = 'test';
    $tmp_object->int_attr = 123;
     
    $memcache->set('key', $tmp_object, false, 10) or die ("Failed to save data at the server");
    echo "Store data in the cache (data will expire in 10 seconds)
    \n";
     
    $get_result = $memcache->get('key');
    echo "Data from the cache:
    \n";
     
    var_dump($get_result);
     

    可以看到新建一个memcache对象后可以是用 set  get  轻松的设置和获取内存中的变量,

    Memcache面向对象的常用接口包括:
    Memcache::connect — 打开一个到Memcache的连接
    Memcache::pconnect — 打开一个到Memcache的长连接
    Memcache::close — 关闭一个Memcache的连接
    Memcache::set — 保存数据到Memcache服务器上
    Memcache::get — 提取一个保存在Memcache服务器上的数据
    Memcache::replace — 替换一个已经存在Memcache服务器上的项目(功能类似Memcache::set)
    Memcache::delete — 从Memcache服务器上删除一个保存的项目
    Memcache::flush — 刷新所有Memcache服务器上保存的项目(类似于删除所有的保存的项目)
    Memcache::getStats — 获取当前Memcache服务器运行的状态
    Memcache::getVersion   获取当前服务器memcache版本信息
    memcache_debug()  开启或关闭调试
    Memcache 类 相关信息如下

    Memcache {
    bool add ( string $key , mixed $var [, int $flag [, int $expire ]] )
    bool addServer ( string $host [, int $port = 11211 [, bool $persistent [, int $weight [, int $timeout [, int $retry_interval [, bool $status [, callback $failure_callback [, int $timeoutms ]]]]]]]] )
    bool close ( void )
    bool connect ( string $host [, int $port [, int $timeout ]] )
    int decrement ( string $key [, int $value = 1 ] )
    bool delete ( string $key [, int $timeout = 0 ] )
    bool flush ( void )
    string get ( string $key [, int &$flags ] )
    array getExtendedStats ([ string $type [, int $slabid [, int $limit = 100 ]]] )
    int getServerStatus ( string $host [, int $port = 11211 ] )
    array getStats ([ string $type [, int $slabid [, int $limit = 100 ]]] )
    string getVersion ( void )
    int increment ( string $key [, int $value = 1 ] )
    mixed pconnect ( string $host [, int $port [, int $timeout ]] )
    bool replace ( string $key , mixed $var [, int $flag [, int $expire ]] )
    bool set ( string $key , mixed $var [, int $flag [, int $expire ]] )
    bool setCompressThreshold ( int $threshold [, float $min_savings ] )
    bool setServerParams ( string $host [, int $port = 11211 [, int $timeout [, int $retry_interval = false [, bool $status [, callback $failure_callback ]]]]] )

    }


    上面的翻译只罗列了一些常用的方法,需要具体资料的可以参考php官方文档http://cn2.php.net/manual/en/book.memcache.php

click
©2010-2024 Jeen All Rights Reserved.Powered by emlog 京ICP备15058100号-1