CNET中国旗舰网站

ZDNet China | CNET科技资讯网 | 政府采购 | 行业网站联盟





 
标题: 草根挑战豪门 PHPer要为自己正名
bbsba
超级会员
Rank: 4



UID 237040
精华 4
积分 1853
帖子 428
威望 729
ZD币 1988 元
阅读权限 90
注册 2007-6-13
状态 离线
  楼主
发表于 2007-6-28 18:15  资料  个人空间  短消息  加为好友 
开发者在线

草根挑战豪门 PHPer要为自己正名

 从诞生之日起,PHP作为针对Web开发量身定制的脚本语言,就一直秉承简单、开源的思想,这也使得PHP社群快速发展。但是,长期以来,由于缺少大企业或组织的支持,PHP在技术发展发展缓慢,直到PHP5.0才真正成为一门面向对象,支持企业开发的语言,PHPer(PHP Programmers)被认为是处于草根阶层的程序员,被认为是技术含量少,层次低的程序员。于是PHPer就以草根自嘲,同时也表示对豪门出身的ASP.NET和JSP的蔑视。




顶部
热点频道推荐: C/S开发| 数据库| WEB开发| 嵌入式| 项目管理|
bbsba
超级会员
Rank: 4



UID 237040
精华 4
积分 1853
帖子 428
威望 729
ZD币 1988 元
阅读权限 90
注册 2007-6-13
状态 离线
  沙发
发表于 2007-6-28 18:16  资料  个人空间  短消息  加为好友 

PHPer为什么被认为是草根?

开篇注释:以下文字并没有非常多的技术词汇,所以只要对PHP感兴趣的人都可以看看。

  PHPer是草根吗?

  从PHP诞生之日起,PHP就开始在Web应用方面为广大的程序员服务。同时,作为针对Web开发量身定制的脚本语言,PHP一直秉承简单、开源的思想,这也使得PHP得以快速的发展,并且大力地推动Web2.0的出现与发展。但是,长期以来,PHPer(PHP Programmers)被认为是处于草根阶层的程序员,被认为是技术含量少,层次低的程序员。这点在国内尤其突出。

  记得一个技术主管说过这样一个事情。他给一个程序员分配了PHP的开发任务,没想到那个程序员居然说:“我是学Java出身的,你让我去写PHP,你这不是在贬低我吗?”。这件事情给我印象很深、触动也很大。虽然这不能代表大部分程序员的看法,但是这么认为的人应该不少。还有人说,现在如果是大型的政府项目,PHP是肯定不会被列入考虑的范围之内的。

  那么为什么PHPer会被认为是草根阶层,是因为它很简单,人人都可以学会,所以没什么难度吗?我以前也是这么认为。PHP入门很快,处理文件,数据,远程连接,网络编程都非常方便,官方也有这样的说法:PHP学习的成本很低,所以你容易去使用它。这个想法也是普遍的,甚至大部分的PHPer自己都这样认为。

  说到这里,我想大家就会想到我为什么要写这些文字。因为一年多的PHP推广工作让我了解到许许多多的使用PHP的公司的大概情况。在这些过程中我慢慢体会到其中的根本原因。这里我说是根本原因虽然是个人的看法,但是我觉得事实就是如此。

  那么为什么PHPer会被看成草根阶层,根本原因是PHPer所作的事情(通过代码实现)的绝大部分都是表现层的东西,这个熟悉PHP的人都知道。当然也会有PHP会说他用MVC结构编写的某某框架具备的如何如何的功能。但是这些还是表现层。所以只会处理表现层的程序员就被看成草根阶层了。事实上也是如此,因为这种情况下PHP确实很难构造大型的应用。

  这就找到原因了,不是的。为什么PHPer总是在负责表现层的东西呢。答案是底层的数据处理(Web应用就是数据存储和查找)我们一般不去触及!好,那么说到这里有些人可能已经想到了,那不就是数据库吗!对,就是数据库!让PHPer一直当草根的元凶就是数据库。为什么?

  因为目前流行的web架构中,前端是负载均衡系统,中间是web服务器,后面是数据库服务器。所以,大部分PHPer工作在Web服务器层面。因为数据库已经很好地为我们组织数据了。所以PHP中没有太多的算法,而且大家潜意识下也觉得不需要,更何况会影响性能。

  这种情况下,PHPer就成为了数据库使用者,他总是在操作数据库。而不是在做程序。一个最简单的PHP脚本就是,连接数据库,把数据取出来,然后用命令输出到浏览器。整个过程不超过10行代码。给人的感觉就是太简单了。没有任何技术含量。为什么了,因为数据处理部分都已经被数据库做完了。尤其是MySQL的使用!MySQL是免费的,所以大多数程序员可以自由地使用它,另外MySQL的速度够快了,所以做个PHP应用程序非常的简单。这就相当于给你枪以后你觉得没有必要学习武功一样。当然,我不是说枪没有武功好。而是说,枪的出现,小孩都可以轻松便捷地杀人了。

  我们再详细说说为什么是数据库!这里我说一个例子。我去过北京一家非常著名的网站,当时我们还有一个比较资深的PHP程序员在那说些系统架构的事情。我记得当时那个程序员问大家一个数据结构中的算法问题的时候,全场没有一个人能答得出来(包括我)。然后那个程序员就开始给大家讲些很基础的数据结构的东西了。让我一下子回想到大学时候学的数据结构课。而这些基础的数据排序、查找、传递的问题在其他高级语言(比如C)是非常普遍的。但是在PHP没有!PHPchina.com的论坛也有个板块叫PHP的数据结构和算法。这个板块的帖子也是寥寥无几。

  仔细回想下,目前网络上大家讨论的最多的是两个方面的问题。一个是PHP的类的使用(处理过程的封装),还有一个是开发框架问题。但是我们仔细分析的话,发现这些所谓的PHP中比较复杂的概念里面没有数据处理!为什么,有数据库!用一个Adodb或者PHP5的PDO就可以搞定了!真的搞定了吗?不是,这些无非是在连接数据库,没有数据处理!所以PHPer似乎就没有什么可以拿出台面上的东西。

  再说一个具体的代码问题,无级分类。这个概念我想大家都不会陌生了吧。我见过两种处理方式。第一个是地道的PHPer的处理方式,也是目前比较流行的。就是用数据库来处理。而且字段很少,只需要加个父类的字段并加以判断就行了。而且这个方法很实用。效率也高!但是这个不是数据处理的范畴了,而是数据库的查找!

  第二个是C程序员用PHP写出来的,他把所有的分类信息都从数据库取出来,然后用数据结构算法进行排列分布,然后输出。

  这里我们不对这两种方式的效率进行对比,我想大家都有各自的想法。但是我想说明一个问题,就是这两种做法的本质的区别。PHPer习惯性地用数据库来处理,而且有很巧的处理方式,效率也很高!这种方式就是数据库查询。而第二种方法是比较有特点的。他认为数据库就是存放数据的地方,具体的逻辑处理还要靠自己的逻辑。

  因此,结论是第二种方法的使用者觉得自己强些,因为数据的逻辑是他组织的!并且觉得PHPer的那种做法无非就是会查询数据库罢了。所以他认为PHPer是草根级的,只懂得操作数据库和排列页面(smarty搞搞那种)。

  说到这里,我想大家都已经回忆了不少自己平时用PHP做开发的经历了吧,是否发现大家确实都在操作数据库呢。

  那么我们来讨论下这个问题。数据库不好吗?为什么我一直用数据库处理数据都没有问题。我要说的是数据库是有问题的,而且有很大的问题!当然这里我并不是说不能用数据库,也不是在贬低数据库的性能。而是,我们没有充分认识到数据库所起到的作用。

  我的想法源起于这样一个事情,有一次一个网站的技术总监问我,为什么他们的网站那么慢,要怎么办。当时,我的MSN里Zend总部的工程师正好在线,我就问他PHP响应比较慢了,怎么办?他当时直接告诉我,数据库问题!肯定是数据库没有优化设计好。所以,我没有给那个技术总监确切的答案了,因为他们的数据库设计我们是不能涉及的。所以就给了大概的数据库优化的建议。这样的事情屡次发生,我就开始怀疑,为什么Zend总部的工程师每次都跟我说是数据库的问题呢,难道我们不能从PHP层面来解决这个问题吗?答案是不能!因为PHP目前的运行速度已经是很快了,通过Zend的性能分析也能看到一个用户的点击,PHP的运行时间只有10%不到,那PHP在干吗?它在等。等数据库的查询结果。这个方面在目前的PHP产品中有了很大的提高,那就是Caching和网页静态化两个方案。Caching可能大家会比较陌生,但是网也静态化现在连PHP产品的用户都非常清楚了。速度快、容易被搜索到等等,好处不言而喻。开玩笑地说,现在网站的主页实现网页静态化只需要硬盘足够大。J至于Caching就比较复杂些,也是大多数PHPer感到头疼的地方。甚至于有些人会用C来实现。因为Caching中的数据有效期验证、查找、提取、更新等等都是比较难处理。当然,也有人会用数据库来处理Caching问题。

  所以,当访问量激增的时候,PHP架构的网站会出现的很多问题都因数据库而起。数据库的同步问题还不算什么。关键是数据库的响应速度会有指数级的降低。这个问题我在10月23号LAMP发布会的时候问过MySQL的副总裁。他当时也没有给我比较完美的答案(这也我的意料之中),因为数据库总会有瓶颈的,除非是神仙数据库,哈哈!

  这里有个题外话,LAMP大会的时候我跟Yahoo的一个技术高管聊的时候,我问他Yahoo在选择MySQL还是Oracle的时候是怎么考虑,他的答案令我非常惊讶。他说大部分的时候我们是会用MySQL的,因为它的性能已经达到我们的要求。但是什么时候我们会选用Oracle呢,就是当我们需要存储收费用户的数据的时候。我就问为什么,难道Oracle比MySQL稳定吗?他说,这个倒没有特别考虑。关键是如果使用Oracle的话,当出现问题的时候我们可以找到负责人,Oracle会负责事故的处理,但是如果用MySQL的话,我们找谁去?

  所以,我们对数据库的看法应该纠正过来,就是说数据库不是万能的。如果有实力的话自己开发数据库。听说Google就是那样的。

  那么我们怎么看待数据库呢?我个人的理解是数据库只是用来降低开发成本的手段。因为采用数据库以后我们不需要考虑数据的存储,尤其是排序和查找。但是这会带来什么问题呢?就是当业务膨胀的时候,数据库就成为瓶颈了!这个时候问题就会非常棘手!因为这个是底层的数据处理。牵一发而动全身。

  所以我认为正确的观点是,数据库是一个数据备份机!怎么理解,我们只需要保证数据的存储有效性就行了。而这本来就是数据库的核心功能,只不过因为数据库的方便的排序等功能让大家把过多的处理都交给数据库来操作了。一个用户的点击PHP就把一大堆的任务交给数据库,然后把结果排列下给用户就完事了。这对数据库是不公平的!也是因此大家开始抱怨数据库的性能了。

  针对这个观点,我们再举个例子,有一次我去拜访一个大型的网络公司(基本上国内只要上过互联网的都知道),他们使用PHP很少,但是我了解到他们其它业务是怎么使用数据库。他们自豪地跟我介绍说他们在数据库的外围有个第二数据库(我这里起名叫第二数据库)。为什么叫第二数据库呢,原来它是一个缓存系统。那么开发工程师怎么去这个缓存系统获取数据呢?那个技术总监自豪地说,他们这个缓存系统由SQL查询语句!我当时很惊讶,但是后来想想确实需要这个。因为当你的缓存系统达到一定量级的时候从缓存获取数据都非常复杂,干脆写个SQL查询语句让缓存系统分析、处理并返回数据。而且他们告诉我,在他们那里,就算是用PHP的话也是让PHP去那个缓存系统读取数据。

  所以说,如果你能处理好这样的问题的话,把数据存放在数据库,然后数据库只起到备份的作用。然后你用自己的中间层来处理分析数据,效果是90%以上的用户访问不访问数据库。有人就会说了,这不就类似连接池的东西吗?是的!因为数据库的瓶颈是无法解决的,我们只能在Web服务器和数据库中间加个中间层来做缓冲。

  可能大家会说了,切,这个我们早就知道了!那好,这里我要说的是它引发的两点思考:

  <!--[if !supportLists]-->第一, <!--[endif]-->有些语言已经有连接池技术的基础上,那些程序员可以方便地使用连接池而构建大型应用。那么如果他们认为PHPer只会是用数据库,那么我们是不是可以说他们只会是用连接池呢?连接池和数据库在这个概念上有何区别?

  第二, 当PHPer开始构建自己的缓存系统的时候,他是不是突破了PHPer只会是用数据库的层次?因为他参与了数据逻辑的处理工作。那么他还是草根吗?

  最后,新一代的PHPer是草根吗?




顶部
热点频道推荐: C/S开发| 数据库| WEB开发| 嵌入式| 项目管理|
bbsba
超级会员
Rank: 4



UID 237040
精华 4
积分 1853
帖子 428
威望 729
ZD币 1988 元
阅读权限 90
注册 2007-6-13
状态 离线
  板凳
发表于 2007-6-28 18:17  资料  个人空间  短消息  加为好友 

小草的孵化人——PHP三位创始人简介

 PHP到现在为止已经诞生12年了。在这期间它经过不断改善,已经成为Web开发最重要的语言之一。PHP能有今天这样的成就,它的3位创始人(Rasmus Lerdorf、Zeev Suraski和Andi Gutmans)功不可没。

  PHP的诞生和Rasmus Lerdorf的经历密不可分。Rasmus Lerdorf于1968年生于格陵兰岛西部迪科斯岛上的Godhavn/Qeqertarsuaq。他是PHP的开山鼻祖。在设计PHP之前,Rasmus Lerdorf曾在上世纪90年代早期维护过新闻卫星通讯系统,并设计了用于验证数据正确性的错误验证协议。然后在1991年获得了2项加拿大的专利。在1991-1993,他做了近3年的Unix程序员,并成功地开发出了一个面向对象接口生成器。在1994年,Rasmus Lerdorf升任产品经理,主持并设计了很多基于Unix的通讯、GUI等系统。在1995年,Rasmus Lerdorf成为了一名IT顾问。在随后几年,他先后在University of Toronto 、Bell Global Solutions以、IBM、Linuxcare Inc和Dot.com Bomb/baby Vacation工作,并设计和开发了大量的软件系统。

  Rasmus Lerdorf在2002年正式加盟Yahoo,在Yahoo他一直从事PHP、Apache、Ajax等技术相关的开发工作以及软件构架的研究,


图1 Rasmus Lerdorf

图2 Rasmus Lerdorf和他的儿子


  多年的软件开发经验使Rasmus Lerdorf拥有了很深的技术功底。在1994年,他设计了PHP的第一个版本PHP1.0,并于1995年将其通过社区发布。在1996年,Rasmus Lerdorf又设计了PHP2,在1998年,由于Zeev Suraski和Andi Gutmans当时正在做毕业设计,需要一个用于开发Web程序的语言,他们也考虑了ASP和JSP,但由于ASP只能运行在Windows平台,而JSP又过于复杂,因此,他们最后选择了PHP,但他们发现,PHP的功能当时还十分有限,因此,他们决定为PHP重新编写底层的解析程序,这就是PHP的第一个被广泛使用的版本:PHP3.0。

  Rasmus Lerdorf虽然创造了PHP,但也许他并不打算创业,而是选择了一些公司继续从事他热爱的事业。并作为PHP传道士到世界各地去宣扬PHP。图3是Rasmus Lerdorf正在斯里兰卡首都科伦坡进行一场别开生面的PHP讲座,其中著名科幻小说家Arthur C. Clarke出席了会议。


图3 Rasmus Lerdorf在斯里兰卡


  而PHP的另外两位创始人Zeev Suraski和Andi Gutmans就没Rasmus Lerdorf那么安分了。他们在1998年重写了PHP3.0的解析器后,在1999年,他们成立了PHP的商业化公司Zend。再一次演绎了双人创业的神话,记得Google的两位创始人布林和佩奇也是在1999年创办的google,虽然Zend没有Google成功,但Zend的成立却为开源软件的商业化奠定的基础。


图4 Zeev Surask

图5 Andi Gutmans


  Zeev Suraski自从1998年以来一直就从事着和PHP相关的工作。在开发完PHP3.0后,Suaraski和Gutmans继续着他们的PHP之梦,开始紧锣密补地开发他们的Zend引擎,也就是后来的的PHP4.0。在设计PHP4.0的同时,他们还为PHP设计了很多的组件,如服务抽象层和多线程支持。
Suraski 和Gutmans 天衣无缝地配合使他们的成就非凡,下面是他们的部分成就:

[ 本帖最后由 bbsba 于 2007-6-28 06:19 PM 编辑 ]




顶部
热点频道推荐: C/S开发| 数据库| WEB开发| 嵌入式| 项目管理|
bbsba
超级会员
Rank: 4



UID 237040
精华 4
积分 1853
帖子 428
威望 729
ZD币 1988 元
阅读权限 90
注册 2007-6-13
状态 离线
  地毯
发表于 2007-6-28 18:18  资料  个人空间  短消息  加为好友 
恭喜,您回复此新帖幸运的使RP值+ 1
 Zend的创立和Google差不多,由于Suraski 和Gutmans都是搞技术出身,而他们并不擅长公司的管理。因此,Zend的另一位联合创始人Doron Gerstel开始进入人们的视线。Doron Gerstel出任了Zend公司的CEO,他拥有丰富的企业管理经验,Doron Gerstel使用这些经验使Zend成功地将PHP商业化,并推出了一系列的产品,如Zend Studio,一个用于Web可视化开发的IDE。

  Zeev Suraski是个活跃分子,他正在全力将PHP推往全世界。Suraski为了推动LAMP在中国的应用,于2006年首次访华。并进行了精彩的演讲。


图6 Zeev Suraski 在演讲

  Zend公司现在已经进入了良性循环,在刚成立时融了800多万美元后,最近又获得了2000万美元的风险投资。在今年10月的Web开发大会上,Zend宣布要使用PHP建立新的Web应用,从而使Web开发更人性化。


图7 Web大会实况

  Suraski 和Gutmans进行了多年的合作,他们正在带领着Zend向着预定的目标前进,希望在他们的带领下,PHP能有更美好的明天。




顶部
热点频道推荐: C/S开发| 数据库| WEB开发| 嵌入式| 项目管理|
bbsba
超级会员
Rank: 4



UID 237040
精华 4
积分 1853
帖子 428
威望 729
ZD币 1988 元
阅读权限 90
注册 2007-6-13
状态 离线
  第5楼
发表于 2007-6-28 18:20  资料  个人空间  短消息  加为好友 

从草根到大腕 PHP技术发展历程

在上个世纪最后十年,是Web应用从诞生到成熟的最重要的十年。在1990年,世界上第一个Web服务器诞生,在1991年,世界上第一个Web浏览器诞生。在随后的数年中,由于计算机硬件水平的提高,Web应用的规模也逐渐扩大。在这期间,也诞生了很多Web开发语言,其中PHP是比较出众的一种Web开发语言。PHP的诞生是否意味着Web应用将走向新纪元呢?它能否抵挡得注其它Web开发语言的进攻呢?

  PHP横空出世

  在1994年,Rasmus Lerdorf首次设计出了PHP程序设计语言。1995年6月,Rasmus Lerdorf在Usenet新闻组comp.infosystems.www.authoring.cgi上发布了PHP 1.0 声明。在这个早期版本中,提供了访客留言本、访客计数器等简单的功能。1995 年中,第二版的 PHP 问市,定名为 PHP/FI(Form Interpreter)。在这一版本中加入了可以处理更复杂的嵌入式标签语言的解析程序。自此奠定了 PHP 在动态网页开发上的影响力。

  自从PHP加入了这些强大的功能,它的使用量猛增。据初步统计,在 1996 年底,有一万五千个 Web 网站使用了 PHP/FI;而在1997年中期,这一数字超过了五万。

  前两个版本的成功,让PHP的设计者和使用者对PHP的未来充满了信心。在1997年,PHP开发小组又加入了 Zeev Suraski 及 Andi Gutmans(这两个人和Rasmus Lerdorf并称为PHP的三位创始人),他们自愿重新编写了底层的解析引擎,其他很多人也自愿加入了PHP的其它部分而工作,从此PHP成为了真正意义上的开源项目。在1998年6月,PHP.net发布了PHP 3.0 声明。在这一版本中PHP可以跟 Apache 服务器紧密地结合;再加上它不断的更新及加入新的功能;并且它几乎支持所有主流与非主流数据库;而且它拥有非常高的执行效率,这些优势使1999年使用PHP的网站超过了十五万!

  PHP经过了3个版本的演化,已经变成一个非常强大的Web开发语言。这种语言非常的易用,而且它拥有一个强大的类库,而且类库的命名规则也十分规范,就算对一些函数的功能不了解,也可以通过函数名猜测出来。这使得PHP十分容易学习,而且PHP程序可以直接使用HTML编辑器来处理,因此,PHP在1998年之后就变得非常流行,有很多大的门户网站(如sina)都使用了PHP作为自己的Web开发语言。




顶部
热点频道推荐: C/S开发| 数据库| WEB开发| 嵌入式| 项目管理|
bbsba
超级会员
Rank: 4



UID 237040
精华 4
积分 1853
帖子 428
威望 729
ZD币 1988 元
阅读权限 90
注册 2007-6-13
状态 离线
  第6楼
发表于 2007-6-28 18:20  资料  个人空间  短消息  加为好友 
面对压力、勇往直前

  在这个多元化的世界中永远都不会有唯一的选择。在PHP诞生的随后的几年,Web应用逐渐被广大用户认可。在这期间,也诞生了一些和PHP类似的Web开发语言,这其中最著名的要数ASP和JSP(ASP和JSP和PHP不同,它们本身并不是语言,而是一种Web开发技术,ASP可以使用JScript或VBScript进行开发,而JSP只能使用Java进行开发)。ASP诞生于1996年,这也是在微软前CEO比尔.盖茨宣布将微软的产品都加上Internet功能的第二年。ASP虽然只能运行在Windows平台上,但由于微软的大力支持和ASP的简单易用,使这种技术逐渐从PHP手中抢来了大量的用户。而在1998年诞生的JSP更是拥有强劲的势头。由于JSP几乎和PHP具有同样的优势,而且JSP是运行在JVM上的,因此,它的效率从理论上要比PHP高。随着这两种技术的诞生,PHP正在受到两面夹击。

  然而PHP也不甘示弱,在经过不断完善后,终于在2000年5月推出了划时代的版本,PHP4。这个版本使用了Zend (Zeev + Andi)引擎,提供了更高的性能,而且还包含了其它一些关键功能,比如:支持更多的 Web 服务器;HTTP Sessions 支持;输出缓存(output buffering);更安全的处理用户输入的方法以及一些新的语言结构。

  而Web开发语言的竞争在进行21世纪以来也发生的不小的变化。ASP虽然在一开始赢得了一些用户,但由于ASP的开发语言是JScript和VBScript,因此,它缺乏象PHP和JSP一样强大的类库,虽然ASP可以通过调用COM组件来弥补这个缺点,但这将是非常麻烦的。而JSP虽然拥有强大的类库,也可以跨平台,但由于Java语言是强类型语言,而且JSP所定义的tag以及其它一些规范过于复杂,这使得JSP在使用上比PHP复杂。因此,PHP在上个世纪的Web竞争中略显上峰。但进行21世纪后,情况显得更加复杂了。




顶部
热点频道推荐: C/S开发| 数据库| WEB开发| 嵌入式| 项目管理|
bbsba
超级会员
Rank: 4



UID 237040
精华 4
积分 1853
帖子 428
威望 729
ZD币 1988 元
阅读权限 90
注册 2007-6-13
状态 离线
  第7楼
发表于 2007-6-28 18:20  资料  个人空间  短消息  加为好友 
羽翼已丰、三足鼎立

  由于ASP和JSP的一些不足,使PHP有了可乘之机。但这并不等于PHP的未来会一帆风顺。ASP的市场现在虽然逐渐消退,但它的继任者ASP.NET正在以前所未有的势头抢夺Web开发的市场。而ASP的缺点正好是ASP.NET的优点。由于ASP.NET从理论上可以使用基于.net framework的任何一种语言进行开发,因此,它同时也就拥有了一个基于.net framework的强大的类库。而Sun的JSP也不甘示弱,由于JSP使用起来比较复杂,因此,Sun又推出了用于简化开发的JSF(用于开发前端界面,JSP+JSF相当于ASP.NET)。这使得PHP又面临着一次空前的考验。

  由于PHP是开源的,并且遵循GNU的GPL协议,因此,使它的支持和参与者遍布世界各地。而经过各方的努力,PHP也终于在2004年推出了PHP5,这个PHP版本较以前的版本又了里程碑式的改进。而这个版本为PHP的最大贡献就是完善了它的面向对象模型。在以前的PHP版本中虽然也支持面向对象,但面向对象模型并不完善,如没有构造函数、析构函数、抽象类等面向对象特性。而在PHP5中这些特性得到了完善。在数据库方面PHP5也做了大量的改进,如提供了用于访问MySQL的新的数据库接口MySQLi,另外,在PHP5中还可以使用面向对象界面和预处理语句(Prepared Statement)等MySQL的新功能。另外,PHP5.0上还捆绑有小容量RDBMS--SQLite。

  而和PHP相关的产品也如雨后春笋般地涌现。尤其在国内,基于PHP的免费和商业Web程序被大量地被应用。

  让我们先看看在Web程序中经常使用了论坛。目前在国内非常流行的论坛主有3个,它们是discuz,phpwind,molyx。这3个论坛被大量使用在国内的很多个人和商业网站中。在php论坛领域已经形成了三足鼎立的局面。而随着Web2.0的流行,它们也逐渐加上了blog等新的功能。

  伴随着论坛程序的更新换代,国内的php CMS发展更迅速。在近几年,已经涌现出了很多基于PHP的文章发布系统。在2004年初有一个phparticle系统,但由于它的更新太慢,因此,用户逐渐对它失去了信心。但同时2004年也是PHP CMS发展最快的一年,老牌的inews也开始浮出水面,3.0一下跳到了4.0。2004年4月份,号称“国内最强的cms":icms开始大势宣传,让很多人趋之若鹜。在这一年还有一些其他php 新闻系统在不段前进,比如博库CMS,9466Article,冰山cms等。

  与此同时,全球领先的PHP技术领导者Zend科技公司也宣布,公司在Series D轮融资中获得2000万美金投资。此轮投资由Greylock Partners牵头,是该公司第一次投资Zend。

  这次新的投资使Zend能够更快地拓展新兴地区的市场,加速产品的发展并且扩充服务体系以满足日益增长的企业级PHP客户的需求。作为Zend科技两位联合创始人,Andi Gutmans 和 Zeev Suraski表示,“对于风险投资公司Greylock Partners看重Zend的发展潜力,并愿意共同分享PHP市场的成长,我们感到非常荣幸。”

  Zend是推动PHP应用于商业获得成功的最典型代表,它创建了对现代Web应用有深远影响的PHP开源道路。在全球范围内,现有超过2000万动态站点使用着PHP,包括Yahoo!等著名网站,目前有超过半数的Ajax-enabled和Web2.0站点选择应用PHP。除此之外,PHP也是企业用来构建服务导向型、创造和混合web服务融于新一代的综合性商业应用的语言,成为开源商业应用发展的方向。

  自从PHP5在2004年推出以来,PHP也逐渐成为企业级Web应用的宠儿。同时和ASP.NET以及新版的JSP形成了三足鼎立的局面。这也许是大多数PHP用户所希望看到了。PHP的强大是有目共睹的。但它也有一些不足的地方,如提供了太多的函数和类,这使得它变得很复杂,这也是很多开发语言开始很好,但后来就变得难学的原因。而且PHP在可视化开发上还有行,这一点ASP.NET做得就很好,目前可能只有ASP.NET能做到这一点。如果PHP提供了用于可视化开发的IDE,那么它的前途将会更加光明。但愿未来的PHP会在这些方面下一些工夫,毕竟,易用是一种开发语言最大的卖点之一。




顶部
热点频道推荐: C/S开发| 数据库| WEB开发| 嵌入式| 项目管理|
bbsba
超级会员
Rank: 4



UID 237040
精华 4
积分 1853
帖子 428
威望 729
ZD币 1988 元
阅读权限 90
注册 2007-6-13
状态 离线
  第8楼
发表于 2007-6-28 18:21  资料  个人空间  短消息  加为好友 

怎样才能成为一个高明的PHPer?

PHP是一门高效的网络编程语言,由于它具有编写灵活、运行快速等优点,迅速成为Web程序员的首选语言。前不久的一份权威调查表明,现在已经有31.6%的网站使用PHP作为主要的服务器端编程语言。

  但是,要成为一名PHP编程高手却并不容易。并不像很多人想象的那样,只要能够飞快地编写几条简单的代码去解决一个复杂的问题就是PHP编程高手了,真正的PHP高手还需要考虑更多的其它问题。以下三条准则是一名成熟的PHP程序员在编程中应该首先遵循的准则。

  1.懒惰是金

  2.编写漂亮的代码

  3.追求程序的速度,而不是编程的速度

  一、懒惰是金

  做一个懒惰的程序员吗?这个想法太奇怪了!因为这个世界上最忙碌的人可能就是计算机程序员了。但正是因为程序员太忙了,所以才应该在编程时学会偷懒。

  对于一个程序员来说,懒惰的方法有两种:其一,大胆使用现成的别人的程序代码,把这些代码融入到你自己的程序或者项目中去。其二是编写一些有用的代码建立一个函数库,在将来编写程序时可以顺手拈来,省去了许多重复的劳动,自然就可以懒惰一点了。
这两种偷懒的方法都非常适合PHP程序员了。

  首先,PHP是在自由开放的环境中诞生和成长的一门语言。在世界各地,有成千上万的程序员,他们一直在为PHP的完美而不断奋斗,他们也愿意和别人分享自己的聪明才智和自己编写的代码。你每天都可以从一些PHP网站、邮件列表、新闻组发现大量的优秀的程序代码。这样说,我并不是鼓励你整天等着让别人为你编写代码,但是你可以“站在伟人的肩膀上”,充分发扬“拿来主义”,聪明地应用别人的程序代码可以节省你大量时间。其次,在PHP中,你可以方便地建立自己的函数库,这样可以在你以后编写程序时省去很多麻烦。

  下面笔者为大家介绍几个通用的函数,这些函数有的来自网上的一些开放源代码的项目,有的精选自邮件列表。如果你能把它们加入到你自己的函数库中,迟早你将会发现自己受益无穷。

  1.通用数据库处理函数

  和其它的CGI函数相比,PHP的优点之一是具有很强大的数据库处理能力。但是,在PHP中,对于不同的数据库都使用一些特定的函数来专门处理,缺少通用的数据库处理函数。这大大降低了程序代码的可移植性,这也为初学编程的朋友带来了很多不便。

  在网上,许多程序员都通过封装类解决了这个问题。他们编写了统一的函数用来处理任何流行的数据库——不管是在Linux世界深受欢迎的Mysql还是在Windows平台上广泛流行的SqlServer。就笔者个人来说,非常喜欢使用这些函数,因为可以直接使用一些简单的诸如"query"、"next_record"之类的函数,而不需要考虑数据库的连接、数据库句柄这些复杂的东西,更不需要考虑使用的是何种数据库。

  如果你需要这些函数,你可以通过访问以下的几个网址而得到:

  http://phplib.netuse.de/
  http://phpclasses.UpperDesign.com/browse.html/package/20
  http://phpdb.linuxbox.com/

  2.变量调试函数

  PHP程序的调试一直是一件让人头疼的事,它既不像VB等高级语言那样有集成的编译调试环境,也不想Perl那样可以在Linux或者DOS环境下直接运行。其实,我们完全可以通过灵活地使用echo语句来完成对PHP的调试工作。

  下面的几个函数可以让你随时查看程序中任何变量的类型及其值。

function ss_array_as_string (&$array, $column = 0) {
 $str = "Array(n";
  while(list($var, $val) = each($array)){
   for ($i = 0; $i < $column+1; $i++){
    $str .= "&nbsp;&nbsp;&nbsp;&nbsp;";
   }
   $str .= $var. ==> ;
   $str .= ss_as_string($val, $column+1)." n";
  }
  for ($i = 0; $i < $column; $i++){
   $str .= "&nbsp;&nbsp;&nbsp;&nbsp;";
  }
  return $str.);
 }
 function ss_object_as_string (&$object, $column = 0) {
  if (empty($object->classname)) {
   return "$object";
  }
  else {
   $str = $object->classname."( n";
    while (list(,$var) = each($object->persistent_slots)) {
     for ($i = 0; $i < $column; $i++){
      $str .= "&nbsp;&nbsp;&nbsp;&nbsp;";
     }
     global $$var;
     $str .= $var. ==> ;
     $str .= ss_as_string($$var, column+1)." n";
    }
    for ($i = 0; $i < $column; $i++){
     $str .= "&nbsp;&nbsp;&nbsp;&nbsp;";
    }
    return $str.);
  }
 }
 function ss_as_string (&$thing, $column = 0) {
   if (is_object($thing)) {
    return ss_object_as_string($thing, $column);
   }
   elseif (is_array($thing)) {
    return ss_array_as_string($thing, $column);
   }
   elseif (is_double($thing)) {
    return "Double(".$thing.")";
   }
   elseif (is_long($thing)) {
    return "Long(".$thing.")";
   }
   elseif (is_string($thing)) {
    return "String(".$thing.")";
   }
   else {
    return "Unknown(".$thing.")";
   }
 }  

  需要的时候,在程序中简单地加入下面的一条代码即可查看程序中的所使用的变量(包括数组和对象)的类型和值:

echo ss_as_string($my_variable);  

  使用下面的语句,我们可以直接查看程序中所有的变量的值:

echo ss_as_string($GLOBALS);  

  3. 控制Log信息的函数

  调试PHP程序的另外一种重要的方法就是查看Log信息。如果能够方便地控制Log信息的级别以及Log信息的显示内容,将会给程序调试带来更多的便利。下面的几个函数可以方便地实现这个功能。

$ss_log_level = 0;
$ss_log_filename = /tmp/ss-log;
$ss_log_levels = array(
 NONE => 0,
 ERROR => 1,
 INFO => 2,
 DEBUG => 3);
function ss_log_set_level ($level = ERROR) {
 global $ss_log_level;
 $ss_log_level = $level;
}
function ss_log ($level, $message) {
 global $ss_log_level, $ss-log-filename;
 if ($ss_log_levels[$ss_log_level] < $ss_log_levels[$level]) {
  // 不显示Log信息
  return false;
 }
 $fd = fopen($ss_log_filename, "a+");
 fputs($fd, $level. - [.ss_timestamp_pretty().] - .$message."n");
 fclose($fd);
 return true;
}
function ss_log_reset () {
 global $ss_log_filename;
 @unlink($ss_log_filename);
}  

  在上面的函数中,有四个Log级别变量。运行PHP程序时,只有当Log的级别低于预设的级别值时,Log信息才可以被记录和显示出来。例如,在程序中加入如下的一条语句:

ss_log_set_level(INFO);

  那么,运行PHP程序时,只有ERROR和INFO级别的LOG信息才能被记录和显示出来,DEBUG级的信息则被忽略了。除此之外,我们还可以设定显示的信息内容,其语句如下:

ss_log(ERROR, "testing level ERROR");
ss_log(INFO, "testing level INFO");
ss_log(DEBUG, "testing level DEBUG");  

  你也可以随时使用下面的语句清空LOG信息:

ss_log_reset();

  4.速度测试函数

  为了优化代码,我们需要一种可以测试代码运行时间的方法,从而来选择最优的代码。下面的函数可以测试运行代码所需的时间:

function ss_timing_start ($name = default) {
 global $ss_timing_start_times;
 $ss_timing_start_times[$name] = explode( , microtime());
}
function ss_timing_stop ($name = default) {
 global $ss_timing_stop_times;
 $ss_timing_stop_times[$name] = explode(, microtime());
}
function ss_timing_current ($name = default) {
 global $ss_timing_start_times, $ss_timing_stop_times;
 if (!isset($ss_timing_start_times[$name])) {
  return 0;
 }
 if (!isset($ss_timing_stop_times[$name])) {
  $stop_time = explode(, microtime());
 }
 else {
  $stop_time = $ss_timing_stop_times[$name];
 }
 $current = $stop_time[1] - $ss_timing_start_times[$name][1];
 $current += $stop_time[0] - $ss_timing_start_times[$name][0];
 return $current;
}  

  现在可以轻松地检查任何一段代码的执行时间了,甚至我们可以同时使用多个计时器,只需在使用上述的几个函数时设定不同的参数作为计时器的名称就可以了。

  5.调试和优化数据库的操作

  对于数据库来说,运行速度是至关重要的。尽管很多书籍和文章都讲授了一些快速运行数据库的方法,但是所有的方法都必须经过实践的检验。下面我们将把PHPLib函数库中的query()函数和上面介绍的几个函数综合起来编写成新的query()函数,和原先的函数相比,这个函数增加了运行时间的监测功能。

function query($Query_String, $halt_on_error = 1) {
 $this->connect();
 ss_timing_start();
 $this->Query_ID = @mysql_query($Query_String,$this->Link_ID);
 ss_timing_stop();
 ss_log(INFO, ss_timing_current(). Secs - .$Query_String);
 $this->Row = 0;
 $this->Errno = mysql_errno();
 $this->Error = mysql_error();
 if ($halt_on_error && !$this->Query_ID) {
  $this->halt("Invalid SQL: ".$Query_String);
 }
 return $this->Query_ID;
}




顶部
热点频道推荐: C/S开发| 数据库| WEB开发| 嵌入式| 项目管理|
bbsba
超级会员
Rank: 4



UID 237040
精华 4
积分 1853
帖子 428
威望 729
ZD币 1988 元
阅读权限 90
注册 2007-6-13
状态 离线
  第9楼
发表于 2007-6-28 18:22  资料  个人空间  短消息  加为好友 

PHP近年发展状况

恭喜,您回复此新帖幸运的使RP值+ 1
说起PHP近几年的发展,可以说是突飞猛进。EDC在2006年的统计信息表明PHP已经跻身全球三个编程语言的行列,并且其是以Web脚本语言的身份参与竞争的。其它两个语言(Java和.net)都是通用的语言(可以开发多种应用)。但是,令人难以置信的是,PHP目前的发展速度是37%明显高于其它两种语言。

  同时在国内,PHP的发展也非常迅速。目前在各大网站云集的北京,PHP几乎是无处不在。百度、新浪、搜狐、TOM等等各大互联网门户都在广泛使用这PHP。同时,近两年来北京多处许多小型的门户站点,也是大部分使用了PHP的技术。就连PHP的工程师需求量都发幅度提高。PHP在国内的官方PHPChina.com网站透露,目前的在京PHP工程师的待遇的平均值可以比ASP工程师的高出一倍。

  那么,为什么PHP可以在近年来发展如此迅速呢。其实跟Web的迅猛发展是紧密联系在一起的。另外,LAMP的迅速发展使得PHP的应用也更加广泛了。那么这里我就Web迅猛发展这个大的环境,和大家下为什么PHP能在把握住这个机会,一举成功。

  总结起来,PHP能发展起来有三个原因:

  ·基于Web量身定制,Web语言的首选,LAMP架构安全稳定

  ·简单,开发快速,扩展性强

  ·PHP企业级应用的发展

  基于Web量身定制,Web语言的首选,安全稳定

  在参加今年的LAMP大会的时候,我看到了PHP的创始人之一,Zeev Suraski。也听取了他在为我们做的PHP的整体介绍的报告。在听他讲当初开发PHP的初衷的时候他说到,他和Andi就是需要一个非常适合于Web的语言来编写一个课题,于是他们就找到了最好的PHP/HI。在他们完成项目的同时,他们发现PHP/HI非常有技术前景,于是他们就加入了PHP的研发,后来又一起开发了Zend Engine,并免费嵌入到PHP当中,发布了PHP4从而让PHP真正发展起来。

  我们可以发现,再后来PHP一些列的版本升级中,PHP一直围绕着Web来增加它的特性,这点对于准备长期使用PHP来作为网站的技术承载平台的公司来说是非常合适的。关于这点Zeev本人也表示在PHP5确定版本的时候不得不把一些很不错的功能去掉,就是为了延续PHP的稳定的特点。

  曾经听一个网站的技术经理说过:“如果做软件,如果要做网站就用PHP!”。当时我们都以为这个是一个笑谈,现在想起来还真是这样。目前,许多的网站项目的负责人都很信任PHP。觉得PHP在支持Web方面非常到位。

  关于PHP应用的安全,则得益于PHP是开源的。在PHP社区有500多个PHP编写工程师在支持着PHP,源代码的公布为它赢得广泛的支持。当然,在讲到PHP的安全性的时候,不能不提到LAMP架构。基于LAMP平台的稳定性从它在国内各大网站的服务器的使用量就可以得以证明。




顶部
热点频道推荐: C/S开发| 数据库| WEB开发| 嵌入式| 项目管理|
bbsba
超级会员
Rank: 4



UID 237040
精华 4
积分 1853
帖子 428
威望 729
ZD币 1988 元
阅读权限 90
注册 2007-6-13
状态 离线
发表于 2007-6-28 18:22  资料  个人空间  短消息  加为好友 
简单,开发快速,扩展性强

  2006LAMP大会的时候,我发现Zeev在谈到PHP的特性的时候第一个就谈到使用简单。而且强调了这就是PHP能够成功的原因。而且Zeev也强掉了PHP将保持简单的风格,以便用户可以方便快捷地开发PHP应用程序。据说,美国上次受的飓风袭击的时候,特意为此搭建的网站就是用PHP的,一共才用了3天。虽然这个时间看上去很短,但是经过我们仔细分析以后,也是有可能的。

  我个人认为不单单是国外,国内也是这样的。个人认为,简单带来的好处就是企业的快速成长的必备条件。用PHP来做Web站点可以在非常短的时间内搭建起一个小规模的网站。因此造就了大批的“个人站长”。同时,在国内也诞生了不少以PHP

  另外,PHP的扩展性也非常好,如果用PHP开发产品的话,可以非常快地根据客户的需求进行定制。而且在PHP广泛的社区里面,可以为PHP的开发工程师提供大量的资源支持。PHP的开发工程师可以很快地获取他所需要的项目、方案或者具体的功能代码。在这点上,许多建站的产品的推广企业也有很深的感受。例如,论坛、CMS还有在线购物等等。

  PHP企业级应用的发展

  众所周知,PHP历来被认为是草根阶层的变成语言。因此困扰PHP发展的很大因素就是大企业的认可。政府、大企业等PHP项目的增加在近几年的表现也是很突出的,这点可能在国外比较明显,它大幅度地提高了大家在选择PHP时候的信心。

  从这两年全球的PHP年会来看,许多的大厂商都开始纷纷关注PHP,参加年会。甚至于像IBM、Oracle等公司直接与Zend公司进行合作,推广并提高PHP在大型项目里面的功能。IBM公司本身也来大量采用PHP来实现它的项目。

  此外,直接一提的是,大型的项目考虑开源的LAMP架构的时候会很看重是否可以获得一些技术支持。而关于PHP的技术支持,还是应该关注它的创始公司Zend 技术公司。Zend公司确实在把PHP推向企业级应用方面做了许多工作。包括与IBM和Oracle一起开发Zend Core for IBM 和 Zend Core for Oracle,并且免费发布。对于国内来说,可幸的是Zend公司在国内也开设了它的官方站点phpchina.com。

  总结起来,PHP目前正处于发展的高峰期,而对于国内来说可能还没有迎来最高峰的时候,所以对于国内喜欢PHP的人来说,应该还有很多机会等待着他们把握。




顶部
热点频道推荐: C/S开发| 数据库| WEB开发| 嵌入式| 项目管理|
 



当前时区 GMT+8, 现在时间是 2008-11-21 23:00

  Powered by Discuz! 5.5.0 © 2001-2007 Comsenz Inc.
Processed in 3.270944 second(s), 4/4 queries

清除 Cookies - 联系我们 - ZDNetChina中文社区 - 无图版