PHP上的 memcache和memcached两个pecl库

2010 年 12 月 05 日 at 下午 10:32分类:PHP | WEB开发

以前看php manual的时候就发现,在php manual 有1个memcache 和memcached两个pecl库,但是就是不知道两个的区别。

今天正好不是太忙,在网上search了下,发现,原来这是两个不同的pecl库。详见下文:(在此多谢原作者的无私奉献,感激不尽)

原文地址:http://www.jb51.net/article/22776.htm

一开始就在疑惑为什么会有两个库,且在php.net官方都有文档支持。

之前尝试用的是memcache,后来发现memcached支持setMulti方法,准备转向使用memcached库了。

(试了下,实际上,memcache从支持多值set,但文档上还没有,看changelog好像是3.0开始支持,稳定版可能不带此功能。)

至于效率,也不清楚会有多大差距。

这里有一篇文章也说到,memcached是基于libmemcached,可能要好一些。

终于,基于libmemached的php扩展在pecl发布了。

于是,现在pecl上有两个memcache客户端了。一个是完全在PHP框架内开发的memcache,一个是使用libmemcached的memecached。

功能嘛,我没看过libmemcached,但是理论上来说,在其他语言里已经很流行的libmemcached应该会有更完善的功能。而程序上性能(内存和CPU使用率),不好说,虽然pecl::memcache是原生实现的,但是使用libmemcached的pecl::memached只支持OO接口,而pecl::memcache则是OO和非OO两套接口并存,这点拖累了它。

其实这些都不是最重要的。使用libmemcached有个明显的优点,就是以后随着memcached服务器端的改进,这个lib也必定会马上跟进的。而pecl::memcache却不一定能做到按时跟进。

pecl::memcached,还有个非常称赞的地方,就是flag不是在操作的时候设置了。而是有一个统一的setOption()。冲着这个方法,就非常值得从pecl::memcache转到pecl::memcached了。具体的接口可以看这里:http://cvs.php.net/viewvc.cgi/pecl/memcached/memcached-api.php?view=markup

我在pecl-dev@里提到是否可以做成driver-based的架构。跟现在的MySQL一样,可以选择使用mysqlnd或者libmysql作为底层的引擎。但是之后想想,其实我并不是很支持对memcached使用这样的架构,它和MySQL的情况不一样。

mysqlnd作为一个引擎而不是一个新的api来开发,可以使得大量的应用程序不需要对数据库操作做修改即可用上新的引擎。如果mysqlnd作为一个新的extension,那么如果它想兼容以前的程序,就面临一个很困难的选择。因为目前为止,存在3个官方的使用libmysql的,并具有不同对外接口的MySQL类集。mysqlnd能兼容mysql,就无法兼容mysqli或者pdo。当然对于使用自己的抽象数据库类的程序来说,这个可以通过改写类或者更换driver(php层面)来实现兼容。但是要想想,就算是使用抽象库,这个世界如此之多的数据库抽象库,如果要让所有人都用得起nd,那得改多少个库,加多少个driver阿。

memcached的情况就简单很多了,目前和官方关系比较密切的只有pecl::memcache,而且接口基本上都是根据memcached的协议来的,和libmemcache相差无几。它们其实都可以被看作是一个抽象类里的不同driver。所以虽然是两套不同的客户端,但是更换起来,几乎不需要做什么改动,只需要在类初始化的地方更改一下,set/get等等这些方法的flag去掉即可,除非你使用了非OO的接口。

另外mysql在通讯和数据获取上也比memcache复杂,nd可以做到一些libmysql无法做到的事情。例如buffer可以直接用php内部的HashTable和zval存储;再例如一些作为持久链接的结构可以更多地缓存起来。(这些例如只是我的猜测,我并没有去阅读过mysqlnd的代码)

Memcached manual:

http://cn.php.net/manual/en/book.memcached.php

Memcache manual:

http://cn.php.net/manual/en/book.memcache.php

Memcached 协议中英文对照

原文地址:http://www.jb51.net/article/22776.htm

zencart根据ip调用语言包

没有评论

2010 年 12 月 05 日 at 下午 10:27分类:PHP | WEB开发

根据ip调用语言包,这个要求比较另类。
最起码对zen-cart来说是比较另类的,客户比较省。
用一个域名代替来代替三个域名的功能,但是这个问题对于zen-cart还是可以解决的,在index.php文件中获取访问者的ip:

$_SERVER['REMOTE_ADDR'],

获取ip后,对ip进行判断,这里用 http://api.liqwei.com /location/?ip=$ip提供的接口,对访问者的ip进行判断,

$IPINFO = file_get_contents ( “http://api.liqwei.com/location/?ip=$ip” );

返回的内容会是国家,ip地址,已经线路。
对返回的内容进行截取preg_match(‘|日本|’,$IPINFO),然后在调用相应的语言包,这样就可以了实现了

PHP判断端口是否打开的代码

没有评论

2010 年 12 月 05 日 at 下午 10:24分类:PHP | WEB开发

$host = 'www.baidu.com'; //要ping的地址,也可以是IP
$port = '80'; //要ping的端口
$num  = 3;
function microtime_float()
 {
          list($usec, $sec) = explode(" ", microtime());
           return ((float)$usec + (float)$sec);
   }
 function ping($host,$port)
 {
         $time_start = microtime_float();
         $ip = gethostbyname($host);
         $fp = @fsockopen($host,$port,&$errno,&$errstr,1);
         if(!$fp) return 'replay time out!';
         $get = "GET / HTTP/1.1\r\nHost:".$host."\r\nConnection: Close\r\n\r\n";
         @fputs($fp,$get);
         @fclose($fp);
         $time_end = microtime_float();
         $time = $time_end - $time_start;
         $time = ceil($time * 1000);
         return 'Reply from '.$ip.': time='.$time.'ms<br />';
 }
 echo 'Pinging '.$host.' ['.gethostbyname($host).'] with Port:'.$port.' of data:<br /><br />'."\r\n";
 for($i = 0;$i < $num;$i++)
 {        
         ping($host,$port);
         sleep(1);
         ob_flush();
         flush();
 }

几个SEO问答让你少奋斗3个月,价值1000元

没有评论

2010 年 12 月 05 日 at 下午 10:22分类:WEB开发 | 乱七八糟

31、怎么查看网站是否收录?答:从一个网站向外导出的链接。
  28、URL越短越好? 答:50个字以内
  答:每天定时定量更新原创内容,每天做一些高质量外链。
  答:Robots是就是告诉搜索引擎页面哪些不允许收录。
  答:3次
  20、网站导出链接的安全范围是多少?
  答:30个以内安全,50个以外可能会出现危险。
  16、网站描述限制的字数多少?
  答:就是网站的主要关键是放在首页的关键词。
  29、关键词的URL必须统一?
  5、什么是百度指数?
  答:把一个网址转移到另一个网址上
  14、网站首页标题的主要关键词最好出现几次?
  答:即是建站程序的内容管理系统,常见的有dedecms
  18、次导航的作用?
  答:网络营销,而网络营销的核心的成交,现在需要做的就是优化你网站的转化率!
  答:域名好比门牌号,也就是找到你的唯一标致,空间就是房子的空间,可以任意换,但是门牌号始终不会改变!比如域名:比较大的空间商有:万网,新网等。
  答:图片的属性,可以用来优化图片,增加PHP教程下载的关键词的密度,百度收录你的图片但是根本不能读出你图片里面的内容。
  答:一个页面给另外一个页面的链接
  最新淘宝钓鱼QQ1045594065〖网站进不了请点百度快照查看〗
  15、网站标题的字数限制多少?
  答:动态页面主要是调用网站程序(网址中有?)静态页面就是网站程序中本身存在的不需要调用(网址中无?)常以html活htm结尾。
  24、网站日志中的200代码是什么意思?
  最新淘宝钓鱼QQ1045594065〖网站进不了请点百度快照查看〗
  答:25个字以内
  答:谷歌对网页权重排名的评价,PR越高说明权重越高。
  这三款软件是一个系列的,都非常强大,是外出旅行的必备软件。尤其是公务员公交线路查询,只要输入出发地和目的地,它就可以自动帮你找到乘车方式;而且,它还是使用本地数据库,不用每次都上网;作者还提供了在线数据库更新,帮助我们更新最新的数据。全国列车时刻查询,甚至在有网络的情况下,携带查询剩余票数的功能,也很实用。
  网站日志是什么?
  33、怎么让百度快照天天更新?
  全新淘宝钓鱼程序,完全无风险无投资稳赚。还在为某些出信人是否为骗子发愁吗?还在为被骗
  答:做好网站SEO整体策划,主要包括选择关键词,判断竞争对手,关键词的布局等。
  答:网站所有访问的记录
  由于某些特殊原因,像twitter、youtube等网站在中国并不存在。不能肉身越狱,并且也没有VPN,但是又有特殊需要的同学可以下载OperaMine使用。不过,原版的OperaMini并不为我们提供此功能。因此请大家上网搜索教程,对软件进行修改。其实修改也非常简单。完成之后,你就可以无限制地浏览网页了。
  8、alt是什么?
  答:即指网站可以正常访问。
  19、什么是导出链接?
  13、PR指是什么?
  17、301重定向是指?
  10、PV是指什么?
  16、网站描述是什么?
  全新淘宝钓鱼程序,以针对更新,现出租,可买断,QQ号.1045594065
  鱼程序出售,出售淘宝钓鱼,出租生态农业淘宝钓鱼,卖淘宝钓鱼程序,淘宝钓鱼销售,淘宝钓鱼程序哪里有买,
  答:当网站中出现死链的时候,404页面可以防止蜘蛛的跳出,同时增加用户的体验度,不损失流量。
  25、怎么判断网站被访问过?
  答:网站日志中有搜索引擎蜘蛛的爬行“痕迹”
  答:是的,URL越短越好。
  3、什么是目标关键词?
  答:是的,每个关键词都对应同一个URL,集中权重。
  9、404页面的作用?
  淘宝钓鱼洗钱教程,淘宝钓鱼洗钱知识,制作淘宝钓鱼,淘宝钓鱼,淘宝钓鱼网站,淘宝钓鱼程序,淘宝
  30、网页关键词密度多少为好?
  答:就是对本站一个简单的描述,会出现搜索引擎的结果页面域名的下方,描述里面应该包含网站的目标关键词,且核心关键词重复2—3次。
  鱼程序出售,出售淘宝钓鱼,出租淘宝钓鱼,卖淘宝钓鱼程序,淘宝钓鱼销售,淘宝钓鱼程序哪里有买,
  在如今这个信息爆炸的时代里,每天都会有数不清的新闻通过各种渠道涌到我们面前,而真正有价值的应该进入我们心里的,却很可能随着日历牌的翻动被我们忽略。作为对一周新闻进行回顾的《比特网新闻中心每周热点推荐》,就是要告诉您过去的七天都发生了哪些新闻,更希望和您一起,站在七天的高度来看待过去一周的新闻。
  23、什么是动态页面?
  36、网站是静态好还是动态好?
  关键词:淘宝钓鱼网站,淘宝钓鱼程序,淘宝钓鱼教程,淘宝钓鱼被抓,淘宝钓鱼源码,淘宝钓鱼网站识
  答:字数比较长的关键词,百度指数比较低,竞争不激烈,容易优化的关键词。
  26、怎么判断外链的权重高低?
  别,淘宝钓鱼木马,淘宝钓鱼连接,淘宝钓鱼群,淘宝钓鱼链接,淘宝跳马,淘宝钓鱼程序下载,最新淘
  答:增加关键词的密度。
  答:静态,因为静态有利于蜘蛛的爬行!当然一个网站的核心还是内容!
  答:内容(原创和更新)超链接(内链和外链)
  答:查询地址:反映一天内搜索量的大小,百度指数越高,说明受到关注的人越多,竞争也更加激烈!
  21、什么是首选域?
  7、怎么查反向链接?4、什么是长尾关键词?
  1、做网站前需要做些什么?
  答:指引蜘蛛的爬行,以便让蜘蛛爬行整个网站。
  27、网站地图有什么作用?
  
    22、做好SEO的2个方面?
  答:有的,开始百度收录可能会给你一个很好的排名,但是可能在一周后排名就消失掉,所以做一个SEOER良好的心态很重要。
  11、CMS是指什么?
  2、什么的域名和空间?
  34、百度对新站有特殊照顾吗?
宝钓鱼程序,淘宝钓鱼木马程序,淘宝钓鱼,淘宝钓鱼网站举报,火狐淘宝钓鱼,淘宝钓鱼病毒,
  答:一般是2%到8%,不需要按照这个要求去刻意去做你网站页面的关键词密度,随意就好,而且网站权重的不同而关键词密度的比例可以有很大的改变!