存档

作者存档

Memcache命中查看

2012年5月18日 没有评论

step1. telnet IP+post, 例如, telnet 127.0.0.1 11211 (如果你的memcache装在本服务器的话)

step2. 执行 stats 命令, 然后你会看到如下的列表:

STAT pid 22459                             进程ID
STAT uptime 1027046                        服务器运行秒数
STAT time 1273043062                       服务器当前unix时间戳
STAT version 1.4.4                         服务器版本
STAT pointer_size 64                       操作系统字大小(这台服务器是64位的)
STAT rusage_user 0.040000                  进程累计用户时间
STAT rusage_system 0.260000                进程累计系统时间
STAT curr_connections 10                   当前打开连接数
STAT total_connections 82                  曾打开的连接总数
STAT connection_structures 13              服务器分配的连接结构数
STAT cmd_get 54                            执行get命令总数
STAT cmd_set 34                            执行set命令总数
STAT cmd_flush 3                           指向flush_all命令总数
STAT get_hits 9                            get命中次数
STAT get_misses 45                         get未命中次数
STAT delete_misses 5                       delete未命中次数
STAT delete_hits 1                         delete命中次数
STAT incr_misses 0                         incr未命中次数
STAT incr_hits 0                           incr命中次数
STAT decr_misses 0                         decr未命中次数
STAT decr_hits 0                           decr命中次数
STAT cas_misses 0            cas未命中次数
STAT cas_hits 0                            cas命中次数
STAT cas_badval 0                          使用擦拭次数
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 15785                      读取字节总数
STAT bytes_written 15222                   写入字节总数
STAT limit_maxbytes 1048576                分配的内存数(字节)
STAT accepting_conns 1                     目前接受的链接数
STAT listen_disabled_num 0
STAT threads 4                             线程数
STAT conn_yields 0
STAT bytes 0                               存储item字节数
STAT curr_items 0                          item个数
STAT total_items 34                        item总数
STAT evictions 0                           为获取空间删除item的总数

step3. 用 get_hits 的数值除以 cmd_gets

在理想情况下,您可能希望得到更高的百分比 — 比率越高越好。
查看统计数据并不时测量它们可以很好地判定缓存策略的效率。
很可能memcached内存不够用,导致新增一条新数据,就丢失一条老的。
设计的时候也需要动静分离,以提高命中率。

stats items
输出各个slab中的item信息。s
stats slabs
输出slab中更详细的item信息
stats sizes
输出所有item的大小和个数
stats cachedump <slab_id> <limit_num>

分类: PHP, 其他 标签:

战争给我的启示

2012年3月18日 没有评论

今天的体验不可置疑是很棒的.我和我所在的军队,经历了一场战争,虽然这是一场没有硝烟、没有刀光剑影、没有厮杀、没有血流成河的战争,但它带给我的冲击比得上任何一部场面很震撼的战争片更来得真实。

首先在选择往那边站的时候(分军队),我是不知道我选择的那边都有站着那些人,我是全凭我的感觉。大佬是我上回归之道第一次看到他的时候,给我的感觉,这个人很稳重、睿智、从容,我很欣赏,当我看到他是我一队的时候,我有一种很踏实的感觉,而且我直觉告诉我,我们这一队一定不会输。这时候我想到了老师的一句话:大多数的时候,我们都把我们光明的一面投射给了我们的偶像。是不是我也有大佬身上的这些特质,而我只是把这些特质投身到了他的身上呢?目前我还没有答案。

在战争开始之前,我都遵循导师的指引,为战争做好必死的准备。周五上完课回来,坚持到晚上两点,把诗写好了,把那三封信写完了。但是在战争开始前,我被分配了门卫这个角色,在吃饭的时候,我还跟我的战友们说,我的诗白准备了, 因为我死不了。然而在我的心中,我一直以为会是一名战士,所以我的准备也算是白费了,现在要做的只是像个木头人站着就好。在我带着一点遗憾体验完这个环节时,我发现其实我是最大的参与者,因为每一场的战役的都没有错过。人也时常这样,比如我们去水果店买苹果,当水果店的老板告诉我们苹果卖完了,我们会很失望,然后我们带着这份感觉选择了雪梨,我们也许永远不会去体会到雪梨生津润燥、清热化痰之功效,又或者我们选择放弃,最后什么也没有得到。

在扮演门卫这个角色的时候,半个小时后,我的脚跟就开始很痛,最后我膝盖以下的那一部分,我除了痛,什么感觉都没有。三个多小时的战争历程,我在关注每一场的战役之外,我还不断去体验那一份痛。我发现一件很有意思的事情,就是当我的注意力没有放在我的脚时,我是感觉不到那一份痛楚。当我很投入去看这某一场战役时,又或者导师在换一首我比较喜欢的音乐时,我就不会感到痛。然后我就在想,为什么会这样,后来我发现原来我在抗拒,抗拒音乐中的鼓声,如果这鼓声在持续,战争就在继续,那么就会有死亡或有人会伤残。这一体验给我的启示是:人很多时候都在给自己制造痛苦,而这些痛苦的源头,就是来来自于执着。

其实在这战争的整一过程,我有好几次是流眼泪的,一开始我是觉得是当时那气氛感染了我。然而事实并非如些,其实我是在恐惧死亡和害怕身边的人会受到伤害。第一次流眼泪是娟姐死掉的那一刻,有一次是我回头看到少玲的眼瞎了,还有一次是周静跟阿洪的那些战役,持续了差不多四十分钟。我审视我的过去,我发现我会流眼泪是跟我过去有关的。我第一个女朋友跟我说分手,我奶奶的去世,我爸爸要去做白内瘴手术。我之前说过一句话:人之所以为痛苦,伤心,皆因得不到或失去了某些对自己而言很重要的东西。今天我想改正为:人之所以为痛苦、伤心、恐惧、害怕,皆因死亡。而最可笑的是,这都是我们自己选择的。

在这一过程,我还看到了何姐不冷静和跳舞那份自在,周静的坚持,阿Sam的不服气,阿洪的坚韧,很多很多。在这里要谢谢大佬,你的选择让我切身体验这战争整一课程,同时更要谢谢我的每位同学,在你们身上显现出来的任何一个面向都让我受益非浅,谢谢大家。

分类: 心灵驿站 标签:

[转]50点编程技巧 提升PHP程序性能

2012年3月16日 没有评论

0、用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的“函数”(译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加上了双引号)。

1、如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍。

2、$row[’id’] 的速度是$row[id]的7倍。

3、echo 比 print 快,并且使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接,比如echo $str1,$str2。

4、在执行for循环之前确定最大循环数,不要每循环一次都计算最大值,最好运用foreach代替。

5、注销那些不用的变量尤其是大数组,以便释放内存。

6、尽量避免使用__get,__set,__autoload。

7、require_once()代价昂贵。

8、include文件时尽量使用绝对路径,因为它避免了PHP去include_path里查找文件的速度,解析操作系统路径所需的时间会更少。

9、如果你想知道脚本开始执行(译注:即服务器端收到客户端请求)的时刻,使用$_SERVER[‘REQUEST_TIME’]要好于time()

10、函数代替正则表达式完成相同功能。

11、str_replace函数比preg_replace函数快,但strtr函数的效率是str_replace函数的四倍。

12、如果一个字符串替换函数,可接受数组或字符作为参数,并且参数长度不太长,那么可以考虑额外写一段替换代码,使得每次传递参数是一个字符,而不是只写一行代码接受数组作为查询和替换的参数。

13、使用选择分支语句(译注:即switch case)好于使用多个if,else if语句。

14、用@屏蔽错误消息的做法非常低效,极其低效。

15、打开apache的mod_deflate模块,可以提高网页的浏览速度。

16、数据库连接当使用完毕时应关掉,不要用长连接。

17、错误消息代价昂贵。

18、在方法中递增局部变量,速度是最快的。几乎与在函数中调用局部变量的速度相当。

19、递增一个全局变量要比递增一个局部变量慢2倍。

20、递增一个对象属性(如:$this->prop++)要比递增一个局部变量慢3倍

21、递增一个未预定义的局部变量要比递增一个预定义的局部变量慢9至10倍。

  22、仅定义一个局部变量而没在函数中调用它,同样会减慢速度(其程度相当于递增一个局部变量)。PHP大概会检查看是否存在全局变量。

23、方法调用看来与类中定义的方法的数量无关,因为我(在测试方法之前和之后都)添加了10个方法,但性能上没有变化。

24、派生类中的方法运行起来要快于在基类中定义的同样的方法。

25、调用带有一个参数的空函数,其花费的时间相当于执行7至8次的局部变量递增操作。类似的方法调用所花费的时间接近于15次的局部变量递增操作。

26、Apache解析一个PHP脚本的时间要比解析一个静态HTML页面慢2至10倍。尽量多用静态HTML页面,少用脚本。

27、除非脚本可以缓存,否则每次调用时都会重新编译一次。引入一套PHP缓存机制通常可以提升25%至100%的性能,以免除编译开销。

28、尽量做缓存,可使用memcached。memcached是一款高性能的内存对象缓存系统,可用来加速动态Web应用程序,减轻数据库负载。对运算码 (OP code)的缓存很有用,使得脚本不必为每个请求做重新编译。

29、当操作字符串并需要检验其长度是否满足某种要求时,你想当然地会使用strlen()函数。此函数执行起来相当快,因为它不做任何计算,只返回在zval 结构(C的内置数据结构,用于存储PHP变量)中存储的已知字符串长度。但是,由于strlen()是函数,多多少少会有些慢,因为函数调用会经过诸多步骤,如字母小写化(译注:指函数名小写化,PHP不区分函数名大小写)、哈希查找,会跟随被调用的函数一起执行。在某些情况下,你可以使用isset() 技巧加速执行你的代码。

(举例如下)

if (strlen($foo) < 5) { echo “Foo is too short”$$ }

(与下面的技巧做比较)

if (!isset($foo{5})) { echo “Foo is too short”$$ }

调用isset()恰巧比strlen()快,因为与后者不同的是,isset()作为一种语言结构,意味着它的执行不需要函数查找和字母小写化。也就是说,实际上在检验字符串长度的顶层代码中你没有花太多开销。

30、当执行变量$i的递增或递减时,$i++会比++$i慢一些。这种差异是PHP特有的,并不适用于其他语言,所以请不要修改你的C或Java代码并指望它们能立即变快,没用的。++$i更快是因为它只需要3条指令(opcodes),$i++则需要4条指令。后置递增实际上会产生一个临时变量,这个临时变量随后被递增。而前置递增直接在原值上递增。这是最优化处理的一种,正如Zend的PHP优化器所作的那样。牢记这个优化处理不失为一个好主意,因为并不是所有的指令优化器都会做同样的优化处理,并且存在大量没有装配指令优化器的互联网服务提供商(ISPs)和服务器。

31、并不是事必面向对象(OOP),面向对象往往开销很大,每个方法和对象调用都会消耗很多内存。

32、并非要用类实现所有的数据结构,数组也很有用。

33、不要把方法细分得过多,仔细想想你真正打算重用的是哪些代码?

34、当你需要时,你总能把代码分解成方法。

35、尽量采用大量的PHP内置函数。

36、如果在代码中存在大量耗时的函数,你可以考虑用C扩展的方式实现它们。

  37、评估检验(profile)你的代码。检验器会告诉你,代码的哪些部分消耗了多少时间。Xdebug调试器包含了检验程序,评估检验总体上可以显示出代码的瓶颈。

38、mod_zip可作为Apache模块,用来即时压缩你的数据,并可让数据传输量降低80%。

39、在可以用file_get_contents替代file、fopen、feof、fgets等系列方法的情况下,尽量用file_get_contents,因为他的效率高得多!但是要注意file_get_contents在打开一个URL文件时候的PHP版本问题;

40、尽量的少进行文件操作,虽然PHP的文件操作效率也不低的;

41、优化Select SQL语句,在可能的情况下尽量少的进行Insert、Update操作(在update上,我被恶批过);

42、尽可能的使用PHP内部函数(但是我却为了找个PHP里面不存在的函数,浪费了本可以写出一个自定义函数的时间,经验问题啊!);

43、循环内部不要声明变量,尤其是大变量:对象(这好像不只是PHP里面要注意的问题吧?);

44、多维数组尽量不要循环嵌套赋值;

45、在可以用PHP内部字符串操作函数的情况下,不要用正则表达式;

46、foreach效率更高,尽量用foreach代替while和for循环;

47、用单引号替代双引号引用字符串;

48、“用i+=1代替i=i+1。符合c/c++的习惯,效率还高”;

49、对global变量,应该用完就unset()掉;

分类: PHP 标签:

Apache服务重启失败原因之一(日志目录不存在)

2011年10月8日 没有评论

[记录一下]今天有个同事改了apache的配置文件,发现reload不成功,然后用configtest检查配置文件是否有问题,竟然通过了,后来我尝试stop,restart,全都失败了,后来检查发现,原来指定的日志文件的目录是不存在的.新建目录,重启,搞掂

分类: 其他 标签:

[转]HTTP错误类型

2011年2月22日 没有评论

HTTP 400 – 请求无效
HTTP 401.1 – 未授权:登录失败
HTTP 401.2 – 未授权:服务器配置问题导致登录失败
HTTP 401.3 – ACL 禁止访问资源
HTTP 401.4 – 未授权:授权被筛选器拒绝
HTTP 401.5 – 未授权:ISAPI 或 CGI 授权失败
HTTP 403 – 禁止访问
HTTP 403 – 对 Internet 服务管理器 (HTML) 的访问仅限于 Localhost
HTTP 403.1 禁止访问:禁止可执行访问
HTTP 403.2 – 禁止访问:禁止读访问
HTTP 403.3 – 禁止访问:禁止写访问
HTTP 403.4 – 禁止访问:要求 SSL
HTTP 403.5 – 禁止访问:要求 SSL 128
HTTP 403.6 – 禁止访问:IP 地址被拒绝
HTTP 403.7 – 禁止访问:要求客户证书
HTTP 403.8 – 禁止访问:禁止站点访问
HTTP 403.9 – 禁止访问:连接的用户过多
HTTP 403.10 – 禁止访问:配置无效
HTTP 403.11 – 禁止访问:密码更改
HTTP 403.12 – 禁止访问:映射器拒绝访问
HTTP 403.13 – 禁止访问:客户证书已被吊销
HTTP 403.15 – 禁止访问:客户访问许可过多
HTTP 403.16 – 禁止访问:客户证书不可信或者无效
HTTP 403.17 – 禁止访问:客户证书已经到期或者尚未生效
HTTP 404.1 – 无法找到 Web 站点
HTTP 404 – 无法找到文件
HTTP 405 – 资源被禁止
HTTP 406 – 无法接受
HTTP 407 – 要求代理身份验证
HTTP 410 – 永远不可用
HTTP 412 – 先决条件失败
HTTP 414 – 请求 – URI 太长
HTTP 500 – 内部服务器错误
HTTP 500.100 – 内部服务器错误 – ASP 错误
HTTP 500-11 服务器关闭
HTTP 500-12 应用程序重新启动
HTTP 500-13 – 服务器太忙
HTTP 500-14 – 应用程序无效
HTTP 500-15 – 不允许请求 global.asa
Error 501 – 未实现
HTTP 502 – 网关错误

分类: 其他 标签:

MYSQL学习-mysql命令自动完成

2010年10月28日 没有评论

mysql自带一个自动完成的工具,可以让你更快的输入数据库名和表名

方法有两个,一是在my.conf加入一行auto-rehash,然后重启mysql服务就可以了,另外一种方法是在mysql启动时加参数:mysqld_safe –user=mysql –auto-rehash!命令补齐是按TAB键,另外,如果要取消这一功能,参数是–skip-auto-rehash,你可以在命令行执行或添加在my.conf里.

分类: MYSQL 标签:

回望2009

2010年1月1日 没有评论

2009,崎岖的一年,4月1日戏剧性的成为自己第一间从事PHP开发的公司裁员名单中的一员!辗转一个月,在东圃黄村找到了一份新工作,上班不到两个星期,因为某些原因,辞工跳到东莞一间处于发展阶段的公司-阳光康健.

阳光康健,一间主推业务是网上预约(看病),然而在阳光的半年多的时间里,我从来未参与过预约平台的开发,在进入公司的第一天开始,负责开发的是模拟考试系统,这个系统足足用了我四个月的时间,在十月份正式上线运营.值得欣慰的是,在系统上线后,没有出现过很严重的BUG,而且用户反馈也很不错.接着过来的是广医的三基考试,为了这一次考试,在原来的模拟考试重构了一个(现场版)考试系统,该系统主要用于局域网内使用.很不幸的是,在正式考试的那天,用一台PC机做为服务器带130多个客户端竟出现了很严重的问题,服务器网卡的丢包太厉害了,导致客户端发送到服务器的请求全都…….汗!

半年过去了,半年中做过切图,写前端,写后端,关注用户体验.总结出来的就是很杂!2010,将是我人生规划中重要的一个里程碑!在这里感谢2009年所有支持帮助过的我人!谢谢你们

分类: 其他, 生活 标签:

codeigniter rewrite规则配置(apache)

2009年12月23日 没有评论

第一步:修改apache配置文件。

DocumentRoot “E:/website”

<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>

<Directory “E:/website”>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>

LoadModule rewrite_module modules/mod_rewrite.so

第二步:在站点根目录加.htaccess

RewriteEngine on
RewriteCond $1 !^(index\.php|public|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]

PS:如果用了rewrite,记得过滤你图片文件夹和样式文件夹,如我的站点的图片/样式/脚本的文件夹分别为images/css/js,.htaccess文件第行的内容改为RewriteCond $1 !^(index\.php|images|css|js|public|robots\.txt)

分类: PHP 标签: ,

消除链接虚线框方法

2009年11月17日 4 条评论

今天在做面页的时候,发现点击页面的链接时,有一个虚线框,影响了页面的外观效果。Google一下,发现方法真不少!我偏爱这种解决方案,如下:

在a标签添加属性hidefocus=”true”,这个属性可让页面链接在IE下消除虚线框,然后添加样式outline:none,这样页面链接在FF下也没有了虚线框了。

分类: CSS, HTML 标签:

DBDesigner 连接MYSQL 5+ 问题

2009年11月11日 没有评论

之前做项目时,一直用DBDesigner设计数据库,本周刚接到一个项目,用DBDesigner设计好表之后,发现连接数据库时出错:

DBDesigner4 – dbExpress error invalid Username/Password.

google之后,原来DBDesigner在mysql官方的强迫下现在已经不支持更新了,而mysql4.1版本以上的因为修改了登录密码的加密方式,所以才会出现上面的错误!解决方法是:

新建一个用户,SQL:

GRANT ALL PRIVILEGES ON *.* TO ‘jemo’@'localhost’ IDENTIFIED BY ‘jemo’ WITH GRANT OPTION;

SET PASSWORD FOR ‘jemo’@'localhost’ = OLD_PASSWORD(’123456′);

搞掂!

分类: 其他 标签: