A. thinkphp里面怎样配置memcache
1、下载并安装memcache
(1)window下安装memcache. 下载memcached.exe
到d:/memcached/memcached.exe.在运行cmd 输入
d:/memcached/memcached.exe -d install安装
。
(2)运行d:/memcached/memcached.exe -d start
启动memcache
(3)下载php_memcache.dll
到php安装目录扩展目录 php\ext
(4)修改php.ini 加入
extension=php_memcache.dll 重启apache.查看phpinfo.php 如果有memcache模块 则
说明安装成功
2、thinkphp 中memcache
的使用
(1)ThinkPHP/conf/convention.php 修改缓存类型
'DATA_CACHE_TYPE'
=> 'Memcache', //
数据缓存类型,
支持: File|Db|Apc|Memcache|Shmop|Sqlite|Xcache|Apachenote|Eaccelerator
(2)thinkphp官方下载扩展ThinkPHP_Extend_3.1.2/Extend/Driver/Cache/CacheMemcache.class.php
保存到
ThinkPHP/Lib/Driver/Cache/CacheMemcache.class.php
(3)测试:
S('test','memcache');$test
= S('test'); echo $test;
输出memcache
测试成功。
此为转载,不是我原创,
B. 如何设置memcached来共享php的session
有3种设置方法,都是通过设置php.ini(也就是php的配置文件)来进行设置的
1.直接修改php.ini配置文件
1
2
3
session.save_handler = memcache //设置session的储存方式为memcache
memcache.hash_strategy = "consistent"//设置memcache的hash算法
session.save_path = "tcp://127.0.0.100:11211" //设置session储存的位置,多台memcache用逗号隔开,例如:tcp://127.0.0.1:11211,tcp://127.0.0.1:12000
2.利用目录下的 .htaccess 文件配置 (apache支持,nginx需要配置)
1
2
php_value session.save_handler "memcache"
php_value session.save_path "tcp://127.0.0.1:11211"
3.在项目的PHP文件中修改配置 (哪个页面用就在哪个页面写)
1
2
ini_set("session.save_handler", "memcache");
ini_set("session.save_path", "tcp://127.0.0.100:11211");
C. 使用php Memcache模块如何正确遍历所有KEY以及VALUE
在php提供的用于与memcached交互的扩展模块中有memcached与memcache,前者提供方法getAllKeys用于遍历所有Memcached服务器上的key,但是并不保证原子操作,而后者却没有提供任何方法,虽然在PHP官方
文档中有人给出使用方法getExtendedStats来间接获取Memcached服务器上的所有key,但是给出的代码是有不少坑的,如果拿来就用,对于cluster的memcached服务器而言,有些问题就需要指出来。
下面将给出官方文档中的代码,并指出可能面临的问题,代码如下:
<?php
/**
*Functiontogetallmemcachekeys
*@authorManishPatel
*@Created:28-May-2010
*/
functiongetMemcacheKeys(){
$memcache=newMemcache;
$memcache->connect('127.0.0.1',11211)ordie("");
$list=array();
$allSlabs=$memcache->getExtendedStats('slabs');
$items=$memcache->getExtendedStats('items');
foreach($allSlabsas$server=>$slabs){
foreach($slabsAS$slabId=>$slabMeta){
$cmp=$memcache->getExtendedStats('cachemp',(int)$slabId);
foreach($cmpAS$keys=>$arrVal){
foreach($arrValAS$k=>$v){
echo$k."<br>";
}
}
}
}//EOgetMemcacheKeys()?>
在上述代码中,如果用于获取单个memcached服务器上的key,是不存在任何问题,但是获取连接池中的多个memcached所有key就存在问题,会发现打印出重复的key,问题就在于当使用getExtendedStats用去特定$slabID
上的信息时,返回的是连接池中所有的服务器上的特定$slabId的存储的keys信息。当$server为"127.0.0.1:11214"且$slabId为0将变量$cmp的信息打印出如下所示:
array(2){
["127.0.0.1:11214"]=>
array(1){
["course_schools__??¨é?¨"]=>
array(2){
[0]=>
string(1)"0"[1]=>
string(10)"12"}
}
["127.0.0.1:11216"]=>
array(1){
["monitorMemcache"]=>
array(2){
[0]=>
string(2)"10"[1]=>
string(10)"12"}
}
}
当$server为"127.0.0.1:11216"且$slabId为0将变量$cmp的信息打印出如下所示:
array(2){
["127.0.0.1:11214"]=>
array(1){
["course_schools__??¨é?¨"]=>
array(2){
[0]=>
string(1)"0"[1]=>
string(10)"12"}
}
["127.0.0.1:11216"]=>
array(1){
["monitorMemcache"]=>
array(2){
[0]=>
string(2)"10"[1]=>
string(10)"12"}
}
}
D. PHP中的Memcache和memcached的区别 Memcache的操作方法
Memcached和Memcache是Memcached服务器的扩展
其实很简单,memcache是php的一个扩展,用于php管理memcached(服务端),php-memcache.dll。
如果安装了memcached(服务端)不安装扩展,那么php无法操控memcached,但是命令行使用起来没有问题
如果安装了PHP memcache客户端(php memcache和php memcached)。但是没有安装memcached(服务端)服务,那么这个就无法使用
只有同时安装了memcached(服务端)和PHP memcache客户端扩展才可以提高动态网站性能
E. php中memcached怎么存多维数组
PHP的Memcached的驱动会自动进行serialize和unserialize,你所需要做的是:
1. 选取一个合适key,比如 "POST_OF_USER_" . $userId
2. 调用set函数把数据丢进去就行了
示例代码:
全选复制放进笔记// 0. 准备:
$cache = new Memcache();
$cache->connect('127.0.0.1', 11211); // 请替换为你的memcache服务器地址和端口
$userId = // 你自己想办法获取...
// 1. 构造cache KEY
$cacheKey = "POSTS_OF_USER_" . $userId;
// 2. 从缓存中获取数据
$posts = $cache->get($cacheKey);
if ($posts === false){
// 3. 缓存失效了,加载数据
$posts = // 你自己想办法加载数据
// 4. 保存数据到缓存中
$cache->set($cacheKey, $posts);
}
// OK,可以使用posts了
F. 如何设置memcached来共享php的session
如果有多台memcached服务器,那么可以使用php-memcache或者php-memcached做相应的设置
编辑vi /etc/php5/apache2/php.ini
使用php-memcache:
session.save_handler = memcache
session.save_path = "tcp://10.1.1.1:11211"
使用php-memcached:
session.save_handler = memcached
session.save_path = "10.1.1.1:11211"
G. php memcached怎么用
memcached是一种缓存技术, 基于c/s模式,他可以把你的数据放入内存,从而通过内存访问提速,因为内存最快的, memcached技术的主要目的提速,
在memachec 中维护了一张大的hashtable表 ,该表是在内存,表的结构是
key value
字串 (字串,数值,数组,对象,布尔,二进制数据,null)
u 安装并使用memcached
安装步骤
(1) 下载memcached软件
(2) 安装
进入cmd ,切换到 memcached.exe 文件所在目录
memcached.exe –d install
(3) 启动memcached
第一种,可以到服务点击启动
第二种, 命令行
memcached.exe –m 200MB –d start 【以deamon方式启动,默认64M】
如果你在启动时,win7启动不成功, 则可以使用如下方法
memcached.exe –p 端口号
转载,仅供参考。
H. php 使用memcached 怎么做登录
原本就不应该用memcached来保存登录状态,如果非要用memcached做点跟登录有关的事,那就用它来保存以下用户信息就行了。
登录信息保存在session或者cookie里,session会更安全,cookie可以长期保存。每次操作都用session或cookie里的登录信息与数据库里或memcached里的用户信息做验证。
memcached其实是一个内存管理工具,它并非PHP的一部分,只是正好PHP可以使用它。
I. linux下安装Memcached服务器和客户端与PHP使用示例
本文实例讲述了Linux下安装Memcached服务器和客户端与php使用。分享给大家供大家参考,具体如下:
Memcached是高性能的分布式内存缓存服务器,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度和可扩展性。
系统环境:CentOS
7.2
64位
Apache2.4.33
安装libevent依赖库
wget
https://github.com/downloads/libevent/libevent/libevent-2.0.15-stable.tar.gz
tar
-zxvf
libevent-2.0.15-stable.tar.gz
cd
libevent-2.0.15-stable
./configure
--prefix=/usr/local
make
sudo
make
install
安装Memcached服务器
wget
http://memcached.googlecode.com/files/memcached-1.4.9.tar.gz
tar
-zxvf
memcached-1.4.9.tar.gz
cd
memcached-1.4.9
./configure
--prefix=/usr/local/memcached
make
sudo
make
install
启动Memcache服务器:
/usr/local/memcached/bin/memcached
-d
-m
128
-u
root
-p
11211
安装Memcached客户端
wget
http://pecl.php.net/get/memcache-2.2.5.tgz
tar
-zxvf
memcache-2.2.5.tgz
cd
memcache-2.2.5
./configure
--enable-memcache
--with-php-config=/usr/bin/php-config
--with-zlib-dir
make
sudo
make
install
【make报错:
***
[memcache.lo]
Error
1】解决方法:
进入memcache安装目录,找到mamcache.c文件,将所有的zend_list_insert加上TSRMLS_CC,形如:zend_list_insert(pool,
le_memcache_pool
TSRMLS_CC);
客户端安装好之后,我们发现PHP扩展库中多了一个memcache.so
在PHP配置文件php.ini中加入该扩展:
extension=/usr/local/php/lib/php/extensions/no-debug-zts-20131226/memcache.so
重启服务器,通过输出phpinfo()查看该扩展相关信息
下面写一个简单的例子,实现memcache扩展与Memcached服务器的交互
<?php
$mc
=
new
Memcache();
//创建Memcache对象
$mc->connect("127.0.0.1",
11211);
//连接Memcached服务器
$mc->set('test','hello
world',0,10);
//存储数据
echo
$mc->get('test');
//获取数据
$mc->delete('test');
//删除数据
$mc->flush();
//强制刷新全部缓存,即清空Memcached服务器
$mc->close();
//断开与Memcached服务器的连接
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php缓存技术总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP错误与异常处理方法总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
您可能感兴趣的文章:linux下安装php的memcached客户端CentOS
5.4下的Memcache安装步骤(Linux+Nginx+PHP+Memcached)linux下安装memcached_动力节点Java学院整理Linux
下安装
memcached
及
memcacheq的方法在Linux服务器上安装
memcached的基本操作linux下编译安装memcached服务php模块memcache和memcached区别分析php扩展memcached和memcache的安装配置方法PHP
使用memcached简单示例分享PHP
MemCached高级缓存配置图文教程PHP
MemCached
高级缓存应用代码
J. php安装了memcached扩展,怎么使用
首先查看memcache的依赖库是否有安装,如果对这个有疑问可以参考php手册的memcache的安装需求说明
命令如下:
查询: rpm -qa | grep libevent
安装:yum -y install libenent*
安装memcached,相当于apache的httpd是用来启动memcache和管理memcache的
命令如下:
yum -y install memcached
接下来再安装memcache,这里我们不要考虑对别的包有什么依赖yum会帮我们解决的,这也是yum的强悍之处
命令如下:
yum -y install php-pecl-memcache
然后查看memcached的bin安装目录,启动memcache,相关参数的作用里面有详细说明
然后简单的写一个memcache连接是否成功的测试代码测试一下看看是否成功,很不给面子没有显示出来我们要的效果
下面说一下我的一般排错办法
1.查看相关文件的权限时候设置正常
2.查看linux的防火墙的设置
3.动态查看apache的错误日志的提示信息
4.查看linux的SELINUX的设置
那下面就安按照这个思路去排错
上面按照前三步的顺序调查问题仍然存在,最后的去看看SELINUX的设置了,其中你可以用tail -f error_log 去动态监测错误日志,但是这里从错误日志看不出来什么东西
命令如下:
查看SELINUX的模式:getenforce
设置SELINUX的模式:setenforce 0
或者编辑这个文 :/etc/selinux/config
最后重启查看效果,问题解决了!