导航:首页 > 编程语言 > phpmemcached用法

phpmemcached用法

发布时间:2023-05-16 08:30:20

Ⅰ 如何设置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");

Ⅱ php 使用memcached 怎么做登录

原本就不应该用memcached来保存登录状态,如果非要用memcached做点跟登录有关的事,那就用它来保存以下用户信息就行了。
登录信息保存在session或者cookie里,session会更安全,cookie可以长期保存。每次操作都用session或cookie里的登录信息与数据库里或memcached里的用户信息做验证。
memcached其实是一个内存管理工具,它并非PHP的一部分,只是正好PHP可以使用它。

Ⅲ 使用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"}
}
}

Ⅳ php 怎么配置memcached

分为linux和windows系统下:

windows下:

1、首先下载memcache的windows版本,将下载下来的文件解压出来后会看见一个名为memcached.exe的可执行程序

2、将该文件放到指定目录,如D盘

3、安装:

开始->运行->cmd打开命令窗口

进入D盘:cd d:

安装memcache服务:

在命令窗口输入:

memacahed.exe -d install

等待命令执行完成后,就可以在服务列表中看到memcached服务

4、启动memcache服务:

memcached.exe -d start

5、可以通过以下命令来查看memcache服务是否启动成功:

wmic process get description, executablepath | findstr memcached.exe

可以将memcached.exe的路径放入到系统环境变量中,方便使用。

查看memcache运行状态:

在命令窗口输入:

telnet 127.0.0.1 11211

链接到memcache上,输入stats就可以查看到当前memcache的状态了;

linux下:

1.下载memcache源码

http://www.memcached.org/

2.解压并进入目录

./configure --prefix=/usr/local/memcache
make
make test
sudo make install

3.启动memcache

memcache -d start -u root

验证memcache是否正确安装并启动

netstat -tap | grep memcached

4.安装memcache扩展库

下载memcache扩展

进入到memcache扩展文件

./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config
make
make install

修改php.ini文件 增加

extension=memcache.so

安装memcached扩展库

下载memcached扩展

memcached扩展需要libMemcached库的支持,所有在安装memcached扩展库之前要确认系统已经安装了libmemcached

安装libmemcached

./configure --prefix=/usr/local/memcache
make
make install

libmemcached安装完成后,就可以安装memcached扩展库

./configure --with-libmemcached-dir=/usr/local/memcached/ --with-php-config=/usr/local/php/bin/php-config
make
make install

同样修改php.ini配置文件,增加

extension=memcached.so

Ⅳ php 一个网站需要用memcached!主要缓存什么内容 那些该缓存 应该注意什么

这个东西最大的好处是可以存储对象,减少很多数据库和服务器压力。直接基于内存的存储,调用速度非常给力。
主要缓存的内容,大概可以归纳为 1.不需要即时显示的内容,或者mysql查询耗时的内容。举例说明:网站的列表【最火的 排行榜】等非及时的,最新的如果强调及时性,可不用,当然也可以使用,可能更新缓存频率较高。
2.非常需要速度和性能的地方
有些页面通过mysql可能联合查询,全表检索查询速度相当慢,这时候可用缓存暂时保留 例如搜索引擎的结果集。

3.临时数据保存
我们知道mysql Oracle等关系型数据库,需要建立表结构才能存储,这就决定了,有些临时数据的存储,也需要建立特定的表结构。这样就比较啰嗦,不便于维护。
4.存储对象
这个也是一个比较有特色的地方,php创建对象的效率是不高的,甚至堪称低效,再加上构造函数大量的数据库操作的话,会让性能低到谷底,那么它能帮你吧已经创建好的对象 保存起来 下次相同的请求 无需new只需要将它还原。
综上,缓存是php的利器,速度 效率 等词汇都可以通过它去体现

Ⅵ php怎么开启memcache

下载memcache安装包和php扩展文件php_memcache.dll。解压memcache,把memcached移动到C盘。

单击开始菜单,运行“cmd”。
cd .. //进入c盘
cd memcached //进入memcache目录
memcache.exe -d install //安装memcache服务

设置php:找到php安装目录,打开php.ini文件。找到配置文件里允许支持扩展的区域exetension=。。,添加一行exetension=php_memcache.dll。

把php扩展文件php_memcache.dll移动到php安装目录下的ext目录下。注意在php.ini中要设置好exetension目录。php_memcache.dll此文件需要先在网上下载下来!

设置apache:
打开apache配置文件httpd.conf,找到LoadMole加载模块区域。去掉前面的“LoadMole mem_cache_mole moles/mod_mem_cache.so”#号

重启apache服务。linux下重启使用命令:service httpd restart。

然后就大功告成!

Ⅶ 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了

Ⅷ 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
最后重启查看效果,问题解决了!

Ⅸ Memcached常用命令以及使用说明详解

一 存储命令

存储命令的格式

? <mand name> <key> <flags> <exptime> <bytes> <data block>

参数说明如下

<mand name> set/add/replace <key> 查找关键字 <flags> 客户机使用它存储关于键值对的额外信息 <exptime> 该数据的存活时间 表示永远 <bytes> 存储字节数 <data block> 存储的数据块(可直接理解为key value结构中的value)

添加

( ) 无论如何都存储的set

这个set的命令在memcached中的使用频率极高 set命令不但可以简单添加 如果set的key已经存在 该命令可以更新该key所对应的原来的数据 也就是实现更新的作用

可以通过“get 键名”的方式查看添加进去的记录

如你所知 我们也可以通过delete命令删除掉 然后重新添加

( ) 只有数据 不存在 时进行添加的add

( ) 只有数据 存在 时进行替换的replace

删除

可以看到 删除已存在的键值和不存在的记录可以返回不同的结果

二 读取命令

get

get命令的key可以表示一个或者多个键 键之间改肆以空格隔开

gets

可以看到 gets命令比普通的get命令多返回了一个数字(上图中为 ) 这个数字可以检查数据是否发生改变 当key对应的数据改变时 这个多返回的数字也会改变

cas

cas即checked and set的意思 只有当最后一个参数和gets所获取的参数匹配时才能存储 否则返回“EXISTS”

三 状态命令

stats

stats items

执行stats items 可以看到STAT items行 如果memcached存储内容很多 那么这里也会列出很多的STAT items行

stats cachemp slab_id limit_num

我们执行stats cachemp 命令效果如下

这里slab_id为 是由 中的stats items返回的结果(STAT items后面的数字)决定的 limit_num看起来好像是返回多少条记录 猜的一点不错 不过 表示显示出所有记录 而n(n> )就表示显示n条记录 如果n超过该slab下的所有记录 则结果和 返回的结果一致

通过stats items stats cachemp slab_id limit_num配合get命令可以遍历memcached的记录

其他stats命令

如stats slabs stats sizes stats reset等等使用也比较常见

四 其他常见命令

append

在现有的缓存数据后添加缓存数据 如现有缓存的key不存在服务器响应为NOT_STORED

prepend

和append非常类似 但它的作用是在现有的缓存数据前添加缓存数据

flush_all

该命令有一个可选的数字参数 它总是执行成功 服务器会发送 “OKrn” 回应 它的效果是使已经存在的项目立即失效(缺省) 或在指定的时间后 此后执行取回命令 将不会有任何内容返回(除非重新存储同样的键名) flush_all 实际上没有立即释放项目所占用的内存 而是在随后陆续有新的项目被储存时哪歼耐执行(这是由memcached的懒惰检测和删除机制决定的)

flush_all 效果是它导致所有更新时间早于 flush_all 所设定时间的项目 在被执行取回命令时命令被忽略

其他命令

memcached还有很多命令 比如对于存储为数字型的可以通过incr/decr命令进行增减操作等等 这里只列出开发李春和运维中经常使用的命令 其他的不再一一举例说明

补充一则 简单认识 net framework中的几种缓存

web站点中缓存的重要性毋庸置疑 我想很多asp net开发人员在开发web应用系统的时候优先考虑使用的缓存并不是第三方缓存解决方案(比如 分布式缓存memcached redis等等) 而应该是 net framework已经提供的多种缓存解决方案 下面结合自己的开发经验谈谈对 net framework中缓存的认识

System Web Caching Cache

估计大部分做过asp net开发的人都用过这个命名空间下的缓存 我们可以直接使用HttpContext Current Cache实例而不 用实例化 当然这个命名空间下的Cache类是允许您实例化的 需要定制自己的缓存系统的当然可以完全自己控制如何初始化这个类 我在园子里看到过有很多 文章介绍Cache的CRUD辅助类库大多数都是针对System Web Caching Cache

需要说明的是 我们还可以通过该命名空间下的HttpRuntime Cache实现web 控制台 winform等不同表现形式下的缓存 而且 完全无需自己实例化 HttpRuntime Cache是之前个人开发中使用比较多的一个类 现在比较偏爱 net framework 中的增强型的缓存类MemoryCache

Output Cache

众所周知 输出缓存主要分页面输出缓存和页面部分缓存 说白了 就是缓存整个页面的或者部分 本来没什么值得讨论的 但是最近看到的这篇博客才恍然发现 想不到使用它还真是大有讲究 我以前怎么就没有发现这个问题呢?看来发现问题和解决问题的能力同样重要 有时候前者甚至更重要啊

System Runtime Caching

现在个人开发中使用最多的类MemoryCache出自这个命名空间 使用前需要引用using System Runtime Caching MemoryCache继承自ObjectCache IEnumerable IDisposable 其中ObjectCache是个抽象类 用过MemoryCache的人都知道 这个MemoryCache有一个属性叫 Default 通常可以像下面这样使用

private static ObjectCache memCache = MemoryCache Default;

当然我们也完全可以通过public MemoryCache(string name NameValueCollection config = null)构造函数初始化缓存对象

接着我们可以在web config文件中配置每个MemoryCache实例运行的内存使用配额方案和配额检查周期 下面示例参考MSDN

<system runtime caching> <memoryCache> <namedCaches> <add name=Default cacheMemoryLimitMegabytes=" " pollingInterval=" : : "/> </namedCaches> </memoryCache> </system runtime caching>

lishixin/Article/program/PHP/201311/21342

Ⅹ PHP中的Memcache和memcached的区别 Memcache的操作方法

Memcached和Memcache是Memcached服务器的扩展


阅读全文

与phpmemcached用法相关的资料

热点内容
安卓手机微信发不出视频怎么弄 浏览:229
压缩机专用工具 浏览:575
qtcreator可以编译cp吗 浏览:405
小项目是云服务器还是本地好 浏览:14
墨痕斋是什么游戏的服务器 浏览:942
word文件如何压缩大小 浏览:279
遵义联通服务器地址是什么 浏览:29
ansys约束命令流 浏览:814
解压软件电脑版如何下载 浏览:791
闪电匕首算法球 浏览:692
linuxredis停止命令 浏览:670
大麦账号怎么加密 浏览:113
穿越火线怎么找服务器 浏览:526
秘密加密社交软件app 浏览:256
c语言编译器怎么找文件 浏览:836
数学不好能编程吗 浏览:254
微云里的视频加密 浏览:41
3大加密货币交易平台 浏览:647
钣金激光切割机编程 浏览:496
vivo手机手电筒app在哪里 浏览:787