PHP教程之PHP模块 Memcached功效多于Memcache
我的文章不会对您的学习起到实质性的作用,您能否成功,还得靠自己的,坚持,坚持,再坚持,就是步入成功的不二法门。 好比说PECL里有两个Memcached的模块,Memcache和Memcached,今朝大局部PHP情况里利用的是名字里不带d的Memcache版本,这个版本释出的对照早,是一个原生版本,与之对应的带d的Memcached版本则是创立在libmemcached的基本上,所以说Memcached版本的功效更全一些。装置Memcached版本的PHP模块
wget http://download.tangent.org/libmemcached-0.35.tar.gz
tar zxf libmemcached-0.35.tar.gz
cd libmemcached-0.35
./configure
make
make install
wget http://pecl.php.net/get/memcached-1.0.0.tgz
tar zxf memcached-1.0.0.tgz
cd memcached-1.0.0
phpize
./configure
make
make install
翻开php.ini加上:
extension = "memcached.so"
如许装置就停止了,你可以经由过程以下号令来确认:
php -m grep mem
演示Memcached版本的新功效
先虚拟一个成绩,假定counter初始值是一个整数,不利用increment办法,经由过程get/set完成每次加一。
在Memcache版本里,咱们只能依照大致以下的体例来停止:
$m = new Memcache();
$m->addServer('localhost', 11211);
$v = $m->get('counter');
$m->set('counter', $v + 1);
因为get/set这两个举措没法作为一个原子来操作,所以当多个历程同时处置时,会呈现丧失的能够,更让人末路火的是,你基本就不晓得甚么时分呈现丧失。
再看看Memcached版本里,咱们是若何做的:
$md = new Memcached();
$md->addServer('localhost', 11211);
$v = $md->get('counter', null, $token)
$md->cas($token, 'counter', $v + 1);
cas是Memcached版本里供应的功效,说白了就是一个悲观锁的功效,假如你把$token的值var_dump出来,就会发明$token其实就是一个版本号,假如经由过程get失掉的$token版本号在cas的时分不合错误应,就申明已有其余操作更新了,此时cas操作会掉败,至于若何持续操作,就看你本人了。
注:假如你想手动重现一下抵触的情形,可在get和cas之间sleep若干秒,并拷贝两份剧本,前后履行。
特地说一句,保举的Memcached版本模块的哈希设置以下:
$md->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT);
$md->setOption(Memcached::OPT_HASH, Memcached::HASH_CRC);
总结
Memcached版本还有良多Memcache没有的功效,好比经由过程getByKey, setByKey等主动撑持多个办事器,就不赘述了,该用哪一个扩大已不言自了然。
增补:http://code.谷歌.com/p/memcached/wiki/PHPClientComparison终于学会把表单的数据插入数据库,然后显示出来了,应该说一个程序的雏形已经诞生了。 开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。 我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。 对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。 装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。 实践是检验自己会不会的真理。 建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。 我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。 微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox支持的不是很好,所以能少用还是少用的好。 再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。 兴趣是最好的老师,百度是最好的词典。 曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线\\\\\\\'_\\\\\\\' ; php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会) 建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。 基础有没有对学习php没有太大区别,关键是兴趣。 有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。 学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。 基础有没有对学习php没有太大区别,关键是兴趣。 使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。 在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
页:
[1]