首页 > WEB优化 > lamp技术心得

lamp技术心得

2011年6月1日 发表评论 阅读评论

最近一直在做Web数据分析的项目,调用大量的mysql数据库数据,又对其进行计算,用的全是lamp技术,只因为就会lamp开发。

我想大多数从事Web开发的人员都应该是如此,由于Web程序开发简单,不管是asp,php,jsp,只要会基本的Web程序语言,对数据库调用,再加上一个Web主机、Web服务,就可以开发自己想要的网站程序了。因为上手简单,互联网运用得到很大的发展,从事Web开发的人就相当多了。

我这个非计算机专业的大学生,也就这样从事了Web开发。工作了三年,最近又用lamp  对数据做了大量的运算,这来说说对lamp技术,php的了解,讲讲他们的功能所在。

1.软件开发和Web开发

说到软件开发,大家立马会说java.我没有学习过java,但知道java是软件开发语言必选。下图是Tiobe发布的2011年5月编程语言排行。

java第一,可见java语言要软件开发的重要地位。

PHP有些下降,排名第五,但也说明其语言的地位比较重要。PHP 主要运用于Web开发,这一点目前是不可动摇的。

2.asp,php和jsp

对于新学者总是会比较这三种语言,每一种语言都有他有长处,不然就没有他存在的意思。

从上图也可以看出PHP的优势,其它两种语言都没有其中。目前人们说的较多的jsp比php运行要快,这点不要否认,可Web开发的意思在哪里。

Web开发要求的是开发周期短,运营维护成本低。jsp这点做的不好,他对硬件要求的要高一些,由于从java过来的,动不动就要用oracle数据库。php一般都用mysql数据库,安装的硬件要求相对较低。虽说mysql的单表空间在几十或几百M时,性能会急剧下降,可现行的网站,有几M的单表数据存储是能满足需求的,我的lampblog博客,发了三四百篇文章,算个小有流量的博客,也就用了8.5Mb,单表最大7Mb,网站访问速度还是很稳定的。

还有一点要说,就是php开发的速度快,启用一个现成的框架,配置一下数据库连接,造几个前端模版,很快一个网站就出来了。

3.php的框架

说到快速开发,大家都会用框架,因为框架把布局都已定好,只用填内容就好了。国内国外的的框架比较多,较出名的有Zend Framework,CakePHP,他们都开发了很多功能,用户不用写简单的功能,只要用调用他的功能,写入自己的流程序好了。

目前我正在用的是kohana3,他的优点是小巧、安全、易扩展,前面提到的框加安全因该不是问题,功能也比较强大,可问题出在性能上,因为开发了太多的功能,调用的程序太多,性能损失较大。kohana3小巧,定义了很好的架构,具备了其本的功能,安全没得说,很好的考虑了扩展问题,不管是加载第三方程序,还是自己重写自己的功能,都是很方便的,所以我们团队选择了他。

4.php的兄弟:perl ruby python

perl借取了C、sed、awk、shell scripting以及很多其他程序语言的特性。其中最重要的特性是它内部集成了正则表达式的功能,以及巨大的第三方代码库CPAN。简而言之,Perl 象C一样强大,象awk、sed等脚本描述语言一样方便。Perl 一般被称为“实用报表提取语言”,php语言也可以扩展perl的代码库。

Ruby 语言通常非常直观,按照编程人认为它应该的方式运行。加上Ruby on Rails的架构,很多人开始加入了行列。

Python具有非常简捷而清晰的语法特点,适合完成各种高层任务。

因为对这几种语言没怎么用,只是一些了解。php可能因为开发的比较早,功能较全,符合程序员大众的需求。这几个语言可只是在某上方面胜于php,后面这几个兄弟的竞争如何不得而知,但目前php使用是最多的。看看wordpress的用户就知道了。

5.php apache mysql

这是我要说的重点,再加上linux,就成了lamp技术,这里不讲如何安装使用,我的博客讲了很多了。

这两天在做大的数据分析计算,按照原有的网页请求流程,请示Url,apache收到请求处理,调用php程序运行,频繁操作数据库,这对大量的分析计算可是不行。

于是我查到了使用php命令行,也就是php-cli方式运行。用shell程序调用php命令行,绕过了apache,这下程序性能提升了很多倍。原来我用的是kohana2.3.4 ,由于对命令行方式支持不是很好,改进了kohana3,这个问题解决了,还有kohana3在性能上也比kohana2.3.4好很多。

这一步解决了很多性能问题。可再用xhprof (php性能分析工具)一分析,主要性能瓶颈转移到了mysql操作上。我用的是kohana3的ORM操作数据库,快速开发方便操作带来了很大的性能问题,于是把所有的SQL找出来,使用kohana3里的DB,这下性能又提升了很多。

之后再次分析性能,主要在数据库读取写入上了。这下开始优化数据库结构了,根据程序功能,合并或分割数据库,还有一个很重要的是创建索引优化SQL查询。以前觉得SQL查询没什么,正常的博客访问不都是提取数据并显示,这些都没有问题的。这次做大量数据分析计算,很多时间是写入、更新数据库,创建索引会加重数据库的写入。最后通过SQL的记录,性能的分析,每一个写入操作,至少要进行十几次的查询操作,性能问题在查询上。能过创建索引优化SQL查询,程序性能又提升好几倍。

这就是我目前所用到的优化技术。

6.shell和php

这是分析过程的一个小插曲。

前面也讲到用shell调用php,我也想到了用shell来处理数据不是更快。可以用shell调用mysql命令,提取数据库的数据,进行处理再写入数据库,效率不是更高。

想法行好,实现成了问题。shell的效率的确很高,他调用外部命令,执行文件操作都是很好的,可问题是对字符串的大量操作成了问题。awk的操作字符串功能实在有限,不能像php那样有大量的字符串操作函数,所以最后不得不放弃这个想法。同时用php操作字符串,读写文件也还是很快的,如果去掉数据库,我的程序性能又可以提升好几倍,可数据的操作不得不用数据库,还好这点小小的性能问题我还是可以接受的。

分类: WEB优化 标签: , , , ,
  1. 本文目前尚无任何评论.