redis的hGetAll函数的性能问题

在没关注这个函数之前,一直用的Memcache的数据存储方式,但是自从更换了redis之后,对于一个hash的数据存与取 对于Memcache方便甚多,但是问题来了,一个hash的列表如果量不大的情况,用hGetAll函数几乎看不出问题,一旦这个列表超过50或者更多时,此时用hGetAll函数便能很直观的看到性能问题,这里就不作数据分析了。

Redis是单线程的!当它处理一个请求时其他的请求只能等着。通常请求都会很快处理完,但是当我们使用HGETALL的时候,必须遍历每个字段来获取数据,这期间消耗的CPU资源和字段数成正比,如果还用了PIPELINING,无疑更是雪上加霜。

Read more

PHP下的Redis使用与总结

关于redis的介绍这里就不写了,百科就能查到,Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

一、利用PHP自带的libredis扩展库进行连接操作

Read more

使用google验证码防止注册机/发帖机for discuz7.2

http://bbs.mudbest.com目前已经采用google验证码方案,平时注册机/发帖机 盯得比较紧,点触验证码感觉还行,只是广告不太喜欢,看到google提供了一个验证码的接口。想到将将原来的discuz默认验证码更换掉成google的验证码,就是用户体验不怎么好。

1、首先到https://www.google.com/recaptcha/admin/create 注册应用。
2、打开http://code.google.com/p/recaptcha/downloads/list?q=label:phplib-Latest ,下载接口文件。
3、拿到注册应用后得到公用key和私有key。

Read more

续PHP下webSerives的nusoap使用

呼…才发现很久没发博客了,真的实在是太忙了。平时还要抽点时间维护http://bbs.mudbest.com 。

平时很少写webService,一般都是需要给第三方提供接口的时候才去写。偶然的一个机会,打开了项目里现有的webService文件,发现前人所写的webService都是以简单的创建一个类,再将类里面的函数暴露给第三方调用,连WSDL都不支持,这就不是规范的webService接口定义了。

开发人员应该都知道,传统的webService是有wsdl支持的,就是介绍了,传入和返回,以及webService的一些基本结构介绍信息,这能很大限度的增加接口可读性和参考性。希望所有开发者能够自我养成良好的编码习惯,开发者最忌讳的就是怕麻烦,请尊重自己的职业。

Read more

关于php在unserialize时返回false

今天碰到一个很畸形的问题,在进行反序列化时,结果返回了false,仔细检查了下,原来是序列化时编码与反序列化时编码问题。

平时很少注意这个,原因是编码不一致时单引号和双引号有差别。

以下函数进行替换可解决此问题。

Read more

命令行执行php可选参数

在web上访问url的时候,往往只需要在执行文件后跟上“?”,”&” 连接符即可带上参数,而在命令行同样也能传递参数。翻看了一下php手册,有介绍关于php在命令行下执行所需要带上参数的资料。

$argv — 传递给脚本的参数数组

例如windows下,php环境在e:/server/php5.4/。

然后在命令行可以直接使用

用法1:e:/server/php5.4/php xxx.php

用法2:e:/server/php5.4/php xxx.php param1 param2

Read more

PHP的fsockopen的使用

打开博客,不知道是因为忙碌,还是因为自身精力。才发现自己很久没更新了。今天简单介绍下fsockoepn的一些简单使用方法。

在我们用php写模拟登陆的时候,curl就足够了,但如果要去模拟抓取一个复杂的网站内容的时候,fsockopen是首选之备。

例如,获取验证码模拟登陆,模拟表单提交等等比较复杂的业务逻辑。

注意:PHP fsockopen需要 PHP.ini 中 allow_url_fopen 选项开启。

Read more