当前位置:  互联网>综合
本页文章导读:
    ▪PHP框架Yii系列教程(四):使用Memcache保存会话        1环境准备 安装Memcached服务端: yum -y installmemcached.x86_64   安装PHP-Memcache扩展: yum -y installphp-pecl-memcache.x86_64   查看PHP-Memcache扩展是否安装成功: php -m | grepmemcache 2启动Memcached服.........
    ▪PHP框架Yii系列教程(三):集成Redis         1安装Redis 切换至/usr/local/src下,下载并安装redis: $ wgethttp://redis.googlecode.com/files/redis-2.6.12.tar.gz $ tar xzf redis-2.6.12.tar.gz $ cd redis-2.6.12 $ make   进入redis-2.6.12目录,修改redis.conf: daemonize.........
    ▪PHP框架Yii系列教程(二):功能简介        1 MVC架构 1.1处理流程 一个Web请求在Yii内部的执行流程如下图所示: 1.2组件角色 组件名 角色与责任 index.php 入口脚本。创建Application的单例对象。 application 前端控制器。分.........

[1]PHP框架Yii系列教程(四):使用Memcache保存会话
    来源: 互联网  发布时间: 2013-10-21

 

1环境准备

安装Memcached服务端:

yum -y installmemcached.x86_64

 

安装PHP-Memcache扩展:

yum -y installphp-pecl-memcache.x86_64

 

查看PHP-Memcache扩展是否安装成功:

php -m | grepmemcache


2启动Memcached服务

分别在11211和11212端口启动主从两个Memcached服务:

memcached -d -p 11211 -u memcached -m 64 -c1024 -P /var/run/memcached/memcached.pid

memcached -d -p 11212 -u memcached -m 64 -c1024 -P /var/run/memcached/memcached2.pid

 

具体参数含义如下:

-d选项是启动一个守护进程;

-m是分配给Memcache使用的内存数量;单位是MB;

-u是运行Memcache的用户,或者是root,

-l是监听的服务器IP地址;

-p是设置Memcache监听的端口;

-c选项是最大运行的并发连接数,默认是1024;

-P是设置保存Memcache的pid文件;保存在 /tmp/memcached.pid

 

通过Telnet客户端访问:

telnet 127.0.0.111211

telnet 127.0.0.111212

注:如果没有安装Telnet则先执行:

yum -y installtelnet.x86_64

 

也可以通过一个PHP文件测试PHP-Memcache扩展和Memcached服务是否连通:

memcache.php

===============================================================================

<?php

$memcache = new Memcache();

$memcache->connect('127.0.0.1', 11211);

$memcache->set('key', 'Memcache test successful!', 0, 60);

$result = $memcache->get('key');

unset($memcache);

echo $result;

?>

 

3配置Yii应用组件

Yii对Memcached提供直接支持,只需简单配置,就可以启用Memcached服务端作为Session服务器。

1.helloyii/protected/config/main.php

===============================================================================

array(

   'components'=>array(

       'cache'=>array(

           'class'=>'CMemCache',

           'servers'=>array(

                array(

                    'host'=>'127.0.0.1',

                    'port'=>11211,

                ),

                array(

                    'host'=>'127.0.0.1',

                    'port'=>11212,

                ),

           ),

       ),

         'session' => array (

             'class'=> 'CCacheHttpSession',

        'cookieMode' => 'only',

        'timeout' => 1200

       ),

),

)

 

2.helloyii/protected/controllers/CacheController.php

===============================================================================

       class CacheController extends CController

       {

                public functionactionFetch($key, $value)

                {

                        Yii::app()->session[$key]= $value;

                        echo'session:['.Yii::app()->session[$key].']';

 

                        Yii::app()->cache->set($key,$value);

                        $data =Yii::app()->cache->get($key);

                       Yii::app()->getController()->render('result',array('data'=>$data));

                }

       }

这个例子分别将键值对保存到session和缓存中。


4 Memcached客户端操作

(TODO)

如何对memcache的数据(key-value)进行遍历操作

http://www.cnblogs.com/sunli/archive/2008/11/01/1324153.html

 

利用shell命令操作Memcached[原创]

http://www.s135.com/post/384/

 

memcached命令行参数说明

http://blog.csdn.net/zzulp/article/details/7823511

 

参考资料

1 CentOS Memcache安装配置教程

http://www.bootf.com/442.html

 

2 Yii memcache 保存 session

http://blog.163.com/darwin_zhang/blog/static/12848873620127725122706/

 

作者:dc_726 发表于2013-4-28 21:23:10 原文链接
阅读:50 评论:0 查看评论

    
[2]PHP框架Yii系列教程(三):集成Redis
    来源: 互联网  发布时间: 2013-10-21

 

1安装Redis

切换至/usr/local/src下,下载并安装redis:

$ wgethttp://redis.googlecode.com/files/redis-2.6.12.tar.gz

$ tar xzf redis-2.6.12.tar.gz

$ cd redis-2.6.12

$ make

 

进入redis-2.6.12目录,修改redis.conf:

daemonize yes

 

启动服务端:

$src/redis-server redis.conf

 

进入命令行验证服务是否启动:

         $src/redis-cli

redis> set foo bar

OK

redis> get foo

"bar"

2安装Yii的Redis插件

目前主要有两种Yii插件:

Ø  Rediscache:基于predis(Redis的纯PHP实现客户端),无需安装Redis for PHP扩展。

Ø  YiiRedis:基于phpredis客户端,需要安装Redis for PHP扩展。

这里采用Rediscache插件,避免线上安装Redis for PHP扩展。

2.1下载安装

从以下地址下载Rediscache插件:

http://www.yiiframework.com/extension/rediscache/files/redis.zip

 

将插件解压到helloyii/app/protected/extensions中:

插件文件部署后的位置应为:helloyii/app/protected/extensions/redis/CredisCache.php

2.2配置Rediscache

1.helloyii/app/protected/config/main.php

===============================================================================

 return array(

 'components' => array(

   …

   'cache'=>array(

    'class'=>'ext.redis.CRedisCache',     //对应protected/extensions/redis/CredisCache.php

    'servers'=>array(

     array(

      'host'=>'127.0.0.1',

      'port'=>6379,

     ),

    ),

   ),

  ),

  …

 );

3安装Yii的会话Redis插件 3.1下载安装

从GitHub上下载插件https://github.com/lincsanders/PRedisCacheHttpSession

 

解压到helloyii/app/protected/extensions下:

插件文件部署后的位置应为:

         helloyii/app/protected/extensions/PredisCacheHttpSession/PRedisCacheHttpSession.php

3.2配置PRedisCacheHttpSession

'session'=>array(

'class' =>'ext.PRedisCacheHttpSession.PRedisCacheHttpSession',

'database' => 9,

),

注意:缓存和会话的database属性一定要区分开,用不同的Redis数据库来保存。

4编写控制器

编写一个读写缓存的控制器进行测试。

 

2.helloyii/app/protected/controllers/CacheController.php

===============================================================================

class CacheController extends CController

{

 public function actionFetch($key, $value)

  {

  Yii::app()->cache->set($key, $value);

  $data = Yii::app()->cache->get($key);

  Yii::app()->getController()->render('result',array('data'=>$data));

  }

}

 

3.helloyii/app/protected/views/cache/result.php

===============================================================================

<?php

 echo$data;

?>

 

现在访问:http://helloyii.com/app/index.php?r=cache/fetch&key=a&value=b

然后通过redis-cli命令行客户端查看下缓存的变化:

可以通过redis-cli客户端查看缓存:

$ src/redis-cli

redis> keys ‘*’

 

参考资料

1官方安装手册

http://redis.io/download

 

2 Yii的Redis插件1:rediscache

http://www.yiiframework.com/extension/rediscache/

 

3 Yii的Redis插件2:yiiredis

https://github.com/phpnode/YiiRedis

 

4 Yii CCache接口的API

http://www.yiichina.com/api/CCache#get-detail

 

5 Redis在YiiFramework中的使用

http://denghai260.blog.163.com/blog/static/726864092012323101628773/

 

作者:dc_726 发表于2013-4-28 21:20:34 原文链接
阅读:53 评论:0 查看评论

    
[3]PHP框架Yii系列教程(二):功能简介
    来源: 互联网  发布时间: 2013-10-21

 

1 MVC架构 1.1处理流程

一个Web请求在Yii内部的执行流程如下图所示:


1.2组件角色

组件名

角色与责任

index.php

入口脚本。创建Application的单例对象。

application

前端控制器。分析用户请求并将其分派到合适的控制器中以作进一步处理。它同时作为服务中心,维护应用级别的配置。

request

解析用户的请求。

urlManager

帮助application决定请求的控制器和动作。

controller

执行所请求的动作,动作通常会引入所必要的模型并渲染相应的视图,动作完成视图渲染并将其呈现给用户。

model

读取数据库或进行其他业务操作。

view

视图渲染出最终的页面。

 

1.3最佳实践

假设有这样一个包含几个子应用的Web应用,例如:

Ø  Front-end:面向外部用户的Web站点

Ø  Back-end:为管理员提供管理功能的Web站点

Ø  Console:在终端中作为定时作业执行

Ø  Web API:为第三方提供集成的API

1.3.1 Model

Ø  包含代表特定数据的属性

Ø  包含业务逻辑、验证规则

Ø  包含操纵数据的代码

Ø  不应使用$_GET,$_POST等与界面类型绑定的变量

Ø  避免嵌入HTML等展示层代码

 

有时遵从第三条“包含操纵数据的代码”会让Model层变得很胖,因此可以为不同的子应用提供不同的Model子类。例如定义一个NewsBase类包含跨子应用共享的代码,为每个子应用实现自己的Model类,只包含针对当前子应用的代码。

1.3.2 View

Ø  包含展示代码,例如HTML和简单的遍历、格式化、渲染PHP代码

Ø  避免包含显示访问数据的代码

Ø  避免直接访问$_GET,$POST等变量

 

视图层的代码重用方式:

Ø  布局:公共展示区域(如页眉、页脚)可以放在一个布局视图中

Ø  部分视图:非布局代码的代码片段可以通过部分视图重用,例如表单代码

Ø  控件:如果部分视图中包含大量逻辑,就可以提取为控件类来重用。

Ø  助手类:完成细小任务的代码可以用助手类来重用,例如格式化数据,产生HTML标签

1.3.3 Controller

Ø  可以访问$_GET,$_POST等PHP变量来获得用户请求

Ø  创建Model实例,并管理其生命周期

Ø  避免嵌入SQL语句

Ø  避免包含HTML等展示层代码

 

在设计良好的MVC应用程序中,控制器通过非常瘦,只包含几十行代码。然而模型层通常会很胖,因为它包含了不同领域的业务逻辑,满足特定的需求。


2应用组件扩展

Yii 预定义了一系列核心应用组件,提供常见Web 应用中所用的功能。像【1.1组件角色】中的urlManager,【3数据访问】中将用到的CDbConnection,以及对Memcached支持等等都是通过可扩展的应用组件的形式加入到Yii中的。

2.1内置应用组件

下面我们列出了由 CWebApplication 预定义的核心组件。

·        assetManager: CAssetManager -管理私有资源文件的发布。

·        authManager: CAuthManager -管理基于角色的访问控制(RBAC).

·        cache: CCache -提供数据缓存功能。注意,你必须指定实际的类(例如CMemCache, CDbCache)。否则,当你访问此组件时将返回 NULL。

·        clientScript: CClientScript -管理客户端脚本(javascripts 和CSS).

·        coreMessages: CPhpMessageSource -提供 Yii 框架用到的核心信息的翻译。

·        db: CDbConnection -提供数据库连接。注意,使用此组件你必须配置其 connectionString 属性。

·        errorHandler: CErrorHandler

    
最新技术文章:
▪用户及权限基础 2---- Linux权限    ▪用户及权限基础 3---- Linux扩展权限    ▪git 简明教程(1) --创建及提交
▪背包 代码    ▪json对象的封装与解析    ▪01背包,完全背包,多重背包 ,模板代码
▪apache安装详解    ▪HDU 4668 Finding string (解析字符串 + KMP)    ▪《TCP-IP详解 卷1:协议》学习笔记(二)
▪《TCP-IP详解 卷1:协议》学习笔记(持续更新...    ▪windows下使用swig    ▪gensim试用
▪Linux Shell脚本编程--nc命令使用详解    ▪solr对跨服务器表联合查询的配置    ▪递归和非递归实现链表反转
▪Linux磁盘及文件系统管理 1---- 磁盘基本概念    ▪Cholesky Decomposition    ▪HTTP协议学习
▪用C语言写CGI入门教程    ▪用hdfs存储海量的视频数据的设计思路    ▪java多线程下载的实现示例
▪【原创】eAccelerator 一个锁bug问题跟踪    ▪hadoop学习之ZooKeeper    ▪使用cuzysdk web API 实现购物导航类网站
▪二维数组中的最长递减子序列    ▪内嵌W5100的网络模块WIZ812MJ--数据手册    ▪xss 跨站脚本攻击
▪RobotFramework+Selenium2环境搭建与入门实例    ▪什么是API    ▪用PersonalRank实现基于图的推荐算法
▪Logtype    ▪关于端口号你知道多少!    ▪Linux基本操作 1-----命令行BASH的基本操作
▪CI8.7--硬币组合问题    ▪Ruby on Rails 学习(五)    ▪如何使用W5300实现ADSL连接(二)
▪不允许启动新事务,因为有其他线程正在该会...    ▪getting start with storm 翻译 第六章 part-3    ▪递归求排列和组合(无重复和有重复)
▪工具类之二:RegexpUtils    ▪Coding Interview 8.2    ▪Coding Interview 8.5
▪素因子分解 Prime factorization    ▪C# DllImport的用法    ▪图的相关算法
▪Softmax算法:逻辑回归的扩展    ▪最小生成树---Kruskal算法---挑战程序设计竞赛...    ▪J2EE struts2 登录验证
▪任意两点间的最短路径---floyd_warshall算法    ▪Sqoop实现关系型数据库到hive的数据传输    ▪FFMPEG采集摄像头数据并切片为iPhone的HTTP Stream...
▪Ubuntu 13.04 – Install Jetty 9    ▪TCP/IP笔记之多播与广播    ▪keytool+tomcat配置HTTPS双向证书认证
▪安装phantomjs    ▪Page Redirect Speed Test    ▪windows media player 中播放pls的方法
▪sre_constants.error: unbalanced parenthesis    ▪http headers    ▪Google MapReduce中文版
▪The TCP three-way handshake (connect)/four wave (closed)    ▪网站反爬虫    ▪Log4j实现对Java日志的配置全攻略
▪Bit Map解析    ▪Notepad 快捷键 大全    ▪Eclipse 快捷键技巧 + 重构
▪win7 打开防火墙端口    ▪Linux Shell脚本入门--awk命令详解    ▪Linux Shell脚本入门--Uniq命令
▪Linux(Android NDK)如何避免僵死进程    ▪http Content-Type一览表    ▪Redis实战之征服 Redis + Jedis + Spring (二)
▪Tomcat7.0.40 基于DataSourceRealm的和JDBCRealm的资源...    ▪利用SQOOP将ORACLE到HDFS    ▪django输出 hello world
▪python re    ▪unity3D与网页的交互    ▪内存共享基本演示
▪python join    ▪不再为无限级树结构烦恼,且看此篇    ▪python实现变参
▪打开文件数限制功能不断地制造问题    ▪Arduino Due, Maple and Teensy3.0 的 W5200性能测试    ▪Selenium实例----12306网站测试
▪基于协同过滤的推荐引擎    ▪C4.5决策树    ▪C#HTTP代理的实现之注册表实现
▪nosql和关系型数据库比较?    ▪如何快速比较这两个字符串是否相等?    ▪hdoj 1863 畅通工程 最小生成树---prime算法
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3