十二
28
2009
最近论坛的数据超过了1600万了,时不时的出现访问速度超慢的情况,虽然不是出现频率很多,但也很影响论坛的正常运行。今天终于抽出一些时间来优化一下,经过分析,发现主要是在一个更新主贴回帖数的语句上出现了问题,因为我们的论坛是从dvbbs转过来的,所以当时这个语句做过调整,原来的语句是
SELECT count(*) FROM cdb_posts AS p LEFT JOIN cdb_members AS m ON p.authorid = m.uid WHERE p.tid = ’1213675′ AND p.invisible = ’0′ AND p.fid NOT IN (444,92) AND m.uid IS NOT NULL
发现效率真的很差,经常要执行10秒左右,于是现学现卖,抓紧学知识,首先是加索引,效果不错问题解决了。但是我还是想优化一下这个语句。因为这里面的left join一直以来概念模糊,只知道人家用我也用。今天到网上仔细找了找资料学习了一番,把这个语句改成了
阅读全文——共1414字
十一
29
2009
上一篇主要说了一下快速最小化安装CentOS5.3的过程,这一篇主要讲一讲APM(Apache、PHP、Mysql的缩写)的安装过程。下一篇将集中讲述一下我是优化LAMP(CentOS5.3+Apache2.2.14+PHP5.2.11+Mysql5.0.36)的具体细节。
在CentOS5.3下面安装APM 主要有两种方法,第一种,yum快速安装;第二种,编译安装。这两种方法可以说各有各的好处,作为生产环境都是可以的,下面我们分别讲讲两种方法。
第一种,yum快速安装APM
安装APM
安装命令如下:
yum install httpd httpd-devel mysql mysql-devel mysql-server php php-devel php-mysql php-common php-gd php-mbstring php-mcrypt php-xml
使用/etc/init.d/httpd start 就可以开启web服务器。
阅读全文——共828字
十一
26
2009
有几个月没有任何文章,今天回来了。几个月前换了新的工作,主要是将一个大数据量和大访问量的论坛的从dvbbs迁移到discuz,并且为新的程序配置LAMP安装生产环境并逐步优化,中间还负责对discuz进行了二次开发。从这篇文章开始,我开始总结一下这几个月的工作吧,首先安装操作系统,我的生产环境选择的是CentOS5.3,下面主要介绍一下CentOS的最小化安装过程。
系统启动到选择安装方式的时候,选择linux text,文本方式安装。
安装过程中,因为是最小化安装,所以语言选择en即可,分区我采用的是默认的没有进行修改,ip是自定义设置的,时间选项选择在上海,去掉了使用UTC的选项,最后选择程序的时候全部不选择。
最小化安装速度很快,也就是10分钟左右,基本的系统就能安装好,然后重启。
重启后,执行以下操作:
yum install setuptool ntsysv ntp vixie-cron crontabs microcode_ctl wget irqbalance
阅读全文——共3227字
八
16
2009
ZendStudio7绝对是php编辑的神器,最近一段时间使用的是不亦乐乎。但是最近工作环境转移到了Ubuntu上了,还是相当希望能够使用ZS7。当然,zend公司还是给我们提供了linux下的安装文件了,由于是初次在linux下面安装ZendStudio7,下面记录一下安装步骤细节,以备以后查阅:
1.下载zendstudio的linux版本,我下载的地址是:http://downloads.zend.com/studio-eclipse/7.0.0/ZendStudio-7.0.0.tar.gz
2.安装支持环境,zendstudio7需要jre支持,所以需要安装一下
sudo apt-get instll sun-java6-jre sun-java6-jdk
3.解压缩ZendStudio7的压缩包,把内容解压缩到个人的home目录中,解压缩出来的文件是一个叫ZendStudio7_0_0.bin的文件
阅读全文——共511字
七
29
2009
Linux如果天天手工备份真是太麻烦了,今天抽空写了一份自动备份脚本具体步骤如下:
1.脚本文件
位置:/usr/systembak/backup.sh
内容:
#!/bin/sh
# File: /usr/systembak/backup.sh
# Database info
DB_USER=”dumpuser”
DB_PASS=”dumpuser”
# Others vars
阅读全文——共1184字
六
28
2009
discuz是个好程序,但是与其他好东西的兼容性就有点差了,最近开发disczu7的辅助功能组件的时候,想用jquery,就遇到了大问题了,有时候能用,有时候不能用,我就纳闷了,于是查了一上午,发现是jquery与discuz的common.js存在兼容性冲突,头疼啊,在网上找了个解决方法,还是不错的原文如下:
Discuz和jQuery的冲突有两点,在/include/javascript/common.js文件的57~64之间有如下代码:
Array.prototype.push = function(value) {
this[this.length] = value;
return this.length;
}
function $(id) {
return document.getElementById(id);
}
Discuz为了兼容低版本的IE,重写了Array对象的push方法,但在重写之前没有做任何判断,有点太XX了~,改为一下形式:
阅读全文——共912字
五
26
2009
平时很少注意到这个细节,一直以为PHP中单引号和双引号是互通的,直到有一天,发现单引号和双引号确实存在区别的时候,就仔细研究了一下,有了下面这段文字。
” ” 双引号里面的字段会经过编译器解释,然后再当作HTML代码输出。
‘ ‘ 单引号里面的不进行解释,直接输出。
从字面意思上就可以看出,单引号比双引号要快了。
例如:
$abc=’my name is tome’;
echo $abc //结果是:my name is tom
echo ‘$abc’ //结果是:$abc
echo “$abc” //结果是:my name is tom
特别在使用MYSQL语句的时候,双引号和单引号的用法让新手不知所措,在这里,举个例子,来进行说明。
阅读全文——共957字
五
25
2009
在使用file_get_contents函数的时候,经常会出现超时的情况,在这里要通过查看一下错误提示,看看是哪种错误,比较常见的是读取超时,这种情况大家可以通过一些方法来尽量的避免或者解决。这里就简单介绍两种:
一、增加超时的时间限制
这里需要注意:set_time_limit只是设置你的PHP程序的超时时间,而不是file_get_contents函数读取URL的超时时间。
我一开始以为set_time_limit也能影响到file_get_contents,后来经测试,是无效的。真正的修改file_get_contents延时可以用resource $context的timeout参数:
$opts = array(
‘http’=>array(
‘method’=>”GET”,
‘timeout’=>60,
)
);
阅读全文——共683字