仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 851|回复: 19
打印 上一主题 下一主题

[学习教程] PHP网页设计php的memcached客户端memcached

[复制链接]
蒙在股里 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:36:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
会PHP吗?会,我会把一加一的运算写在函数里,然后调用啦!   memcache的官方主页:http://pecl.php.net/package/memcache
memcached的官方主页:http://pecl.php.net/package/memcached

以下是我装置Memcached版本的PHP模块的进程纪录:

wget http://download.tangent.org/libmemcached-0.48.tar.gz
tar zxf libmemcached-0.48.tar.gz
cd libmemcached-0.48
./configure --prefix=/usr/local/libmemcached --with-memcached
make
make install

wget http://pecl.php.net/get/memcached-1.0.2.tgz
tar zxf memcached-1.0.2.tgz
cd memcached-1.0.2
/usr/local/webserver/php/bin/phpize
./configure --enable-memcached --with-php-config=/usr/local/webserver/php/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached
make
make install

在php.ini中到场
extension=memcached.so
完成

另:
在装置libmemcached时,假如只用./configure,能够会提醒:
checking for memcached… no
configure: error: “could not find memcached binary”

二者利用起来几近如出一辙。
复制代码 代码以下:
$mem = new Memcache;
$mem->addServer($memcachehost, '11211');
$mem->addServer($memcachehost, '11212');
$mem->set('hx','9enjoy');
echo $mem->get('hx');

复制代码 代码以下:
$md = new Memcached;
$servers = array(
array($memcachehost, '11211'),
array($memcachehost, '11212')
);
$md->addServers($servers);
$md->set('hx','9enjoy');
echo $md->get('hx');

memcached的办法比memcache多很多,好比getMulti,getByKey,addServers等。
memcached没有memcache的connect办法,今朝也还不撑持长毗连。
memcached 撑持 Binary Protocol,而 memcache 不撑持,意味着 memcached 会有更高的功能。
Memcache是原生完成的,撑持OO和非OO两套接口并存,memcached是利用libmemcached,只撑持OO接口。
更具体的区分:http://code.谷歌.com/p/memcached/wiki/PHPClientComparison


memcached办事端是集中式的缓存体系,散布式完成办法是由客户端决意的。
memcached的散布算法普通有两种选择:
1、依据hash(key)的了局,模毗连数的余数决意存储到哪一个节点,也就是hash(key)% sessions.size(),这个算法复杂疾速,体现优秀。但是这个算法有个弱点,就是在memcached节点增添或删除的时分,原本的缓存数据将大范围生效,射中率大受影响,假如节点数多,缓存数据多,重建缓存的价值太高,因而有了第二个算法。
2、Consistent Hashing,分歧性哈希算法,他的查找节点进程以下:
起首求出memcached办事器(节点)的哈希值,并将其设置装备摆设到0~232的圆(continuum)上。然后用一样的办法求出存储数据的键的哈希值,并映照到圆上。然后从数据映照到的地位入手下手顺时针查找,将数据保留到找到的第一个办事器上。假如超越2的32次方后依然找不到办事器,就会保留到第一台memcached办事器上。

memcache在没有任何设置装备摆设的情形下,是利用第一种办法。memcached要完成第一种办法,仿佛是利用(未确认):
$md->setOption(Memcached::OPT_HASH, Memcached::HASH_CRC);

第二种分歧性哈希算法:

memcache在php.ini中加
复制代码 代码以下:
Memcache.hash_strategy =consistent
Memcache.hash_function =crc32

memcached在法式中加(未确认)
复制代码 代码以下:
$md->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT);
$md->setOption(Memcached::OPT_HASH, Memcached::HASH_CRC);

$mem->setOption(Memcached::OPT_DISTRIBUTION,Memcached::DISTRIBUTION_CONSISTENT);
$mem->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE,true);

一些参考文档:
memcached散布测试呈报(分歧性哈希情形下的散列函数选择):
http://www.iteye.com/topic/346682
php模块memcache和memcached区分: http://www.jb51.net/article/27366.htm
PHP模块:Memcached > Memcache:http://www.jb51.net/article/27367.htm

20110509@@UPDATE:
假如装置libmemcached有以下失足提醒:
make[2]: *** [clients/ms_conn.o] Error 1
make[2]: Leaving directory `/www/soft/libmemcached-0.48'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/www/soft/libmemcached-0.48'
make: *** [all] Error 2

可在configure时增添--disable-64bit CFLAGS="-O3 -march=i686"
即:./configure --prefix=/usr/local/libmemcached --with-memcached --disable-64bit CFLAGS="-O3 -march=i686"在这里想谈谈自己这六个多月的PHP学习心得,希望对给比我还新的新手们有所帮助,讲的不是很深刻,甚至有的想法可能是错误的,希望不要误导新人才好,大家要有自己的主见。
再现理想 该用户已被删除
沙发
发表于 2015-2-4 03:44:14 | 只看该作者
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
灵魂腐蚀 该用户已被删除
板凳
发表于 2015-2-9 14:10:49 | 只看该作者
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
小妖女 该用户已被删除
地板
发表于 2015-2-26 01:07:59 | 只看该作者
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
若相依 该用户已被删除
5#
发表于 2015-3-4 20:09:12 | 只看该作者
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
小女巫 该用户已被删除
6#
发表于 2015-3-5 12:03:36 | 只看该作者
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
再见西城 该用户已被删除
7#
发表于 2015-3-12 05:34:37 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
透明 该用户已被删除
8#
发表于 2015-3-19 18:17:19 | 只看该作者
实践是检验自己会不会的真理。
愤怒的大鸟 该用户已被删除
9#
发表于 2015-3-20 22:56:55 | 只看该作者
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
乐观 该用户已被删除
10#
发表于 2015-3-24 03:10:24 | 只看该作者
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
活着的死人 该用户已被删除
11#
发表于 2015-4-1 09:03:17 | 只看该作者
爱上php,他也会爱上你。
深爱那片海 该用户已被删除
12#
发表于 2015-4-1 12:10:06 | 只看该作者
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
飘灵儿 该用户已被删除
13#
发表于 2015-4-5 04:45:23 | 只看该作者
首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
金色的骷髅 该用户已被删除
14#
发表于 2015-4-16 07:23:28 | 只看该作者
,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。
因胸联盟 该用户已被删除
15#
发表于 2015-4-18 09:41:00 | 只看该作者
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
兰色精灵 该用户已被删除
16#
发表于 2015-5-6 14:46:05 | 只看该作者
Ps:以上纯属原创,如有雷同,纯属巧合
简单生活 该用户已被删除
17#
发表于 2015-6-13 21:56:12 | 只看该作者
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
只想知道 该用户已被删除
18#
发表于 2015-6-20 15:55:25 | 只看该作者
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;
山那边是海 该用户已被删除
19#
发表于 2015-6-20 18:11:31 | 只看该作者
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
冷月葬花魂 该用户已被删除
20#
发表于 2015-7-1 21:46:58 | 只看该作者
当然这种网站的会员费就几十块钱。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-29 04:35

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表