`
yipsilon
  • 浏览: 244719 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

PHP会倒掉吗?

php 
阅读更多

最近有不少文章讨论PHP如何如何不好,如何如何不适应企业应用,如何如何会倒掉的问题。我也发表一下我的看法。

 

我认为PHP的最成功之处在于以下几点:

 

1. 相对简单的语:PHP的语法构成囊括了C、JAVA、PERL等,这使得熟悉这些语法的人可以很轻易地入门PHP语言,而其他语言则不同,除非用户在一门语言中有了一定的经验,再去学另一门语言能稍微轻松些,但是对于毫无经验的初学者,那是一个痛苦的过程。

 

2. 丰富的类库支持:PHP内置了非常多的函数,而且都使用统一的命名环境,这样PHP开发人员只需要打开PHP参考文档就可以查询到,不必像其他语言那样(如Java),不断地加入第三方类库及学习其使用方法。

 

3. 低廉的部署成本:因为PHP本身就是开源的,因此它使用的环境大多是开源或免费的,况且市面上集成产品很多,如XAMPP,一解压运行个自动安装程序,就可以使用了。再看其他的语言,Java产品中免费的有tomcat,它还是需要进行一些手工配置,且性能非常一般;而ASP.NET的它本身就是收费的,这里就不说了。

 

再者就是,PHP是专门针对网站的,这使得它把全部精力投入到如何优化网站上面,不管是语法结构还是解释引擎。而其他语言如Java或.net,他们是一套通用的语言,网站应用只是其一部分,网站快速开发和应用能力确实没有PHP强。

 

上面几点总结出一句话就是:不用高价的开发人员,不用配置很高的硬件服务器,就可以非常快速地构建网站应用。而这个速度,是其他语言所不能匹敌的。最简单的测试不过是拿一个同样功能的网站,让一帮初级程序员分别用PHP、JAVA、ASP.NET进行开发,看看开发和部署速度的差距就知道了。

 

你会发现,这应该就是PHP的魅力所在。

 

至于OOP,我觉得对于网站的应用来说,只要能以最快的速度满足客户要求就行了,任何产品如果无法满足客户的需求,那使用再好的技术也是扯淡,更何况如果不是大中型项目,OOP是会拖累开发进度的,而目前大部分网站应用来说,基本都是小型项目。

 

而企业应用,我觉得PHP完全可以胜任,因为PHP它内置了支持调用Java和.NET组件,如果自身不行,那就用别人的嘛,只要快速开发的本质不变就行。

 

至少,从我接触PHP的这段时间来看,个人认为它不会垮掉,因为网站应用还没有能像它一样简洁快速的语言出现。(不要说ruby了,它的学习门槛不低啊,而且运行环境配置起来也比较复杂,大部分常用类库也都是外置的)

分享到:
评论
37 楼 fireflyc 2009-11-26  
<div class="quote_title">yipsilon 写道</div>
<div class="quote_div">
<p> </p>
<div class="quote_title">fireflyc 写道</div>
<div class="quote_div">1.jsp我没有发现需要配置,无非是安装jdk,运行tomcat仅仅如此而已。难道你不下载php,安装http server吗?如果你认为这个影响开发效率那就有点说不过去了。asp简单么?当年IIS给我报的asp错误没有一个能让我准确定位到错误代码的。</div>
 
<p>呵呵,你用过tomcat么?难道你发布的程序时跑在8080端口?晕... 想当初配置ajp是多么麻烦啊,从apache 2.2开始才有所改善,但是还是需要配置的。</p>
<p> </p>
<p>想当初ASP网站是多么地流行啊,不是因为它多么强大,而是它很简单,非常容易入门。至于你有错误找不到,我曾经就看到好多java开发人员在论坛上抱怨tomcat抛出各种不可理解的异常,后来发现那是个人技能问题,而不是语言本身的问题。</p>
<p> </p>
<p> </p>
<div class="quote_title">fireflyc 写道</div>
<div class="quote_div">2.ok,你提到了这个项目。这个是PHP同一个组织下的开源项目可以说是PHP钦点的标准库。后台无疑是zend。那么我再列举一些把,smarty模板引擎不属于任何开源组织,还有一个曾经非常好用的ADODB也是个人的都已经N久没有更新了,还有一些效颦般的框架。就这些了么?这叫做繁荣?看看C、C++的国度,从编辑器到server,从工具库到线程库、内存管理库,不愧是发展了真久,apache,gnu, monzilla等等开源组织一篇繁华。看看java,redhat,spring source,apache,opensymphony,也是一篇繁华。而PHP呢?你还能数出来几个? </div>
<p> </p>
<p>smarty建立之初是PHP官方提供支持的,后来分离了,一方面是开发人员的问题,另一方面是它与后来官方所制定的策略相违背。目前官方所支持的核心部分就是C写的模块,而不是PHP写的顶层应用,如果当时smarty作为PHP模块来写的话,那估计现在早就是PHP核心函数了。</p>
<p> </p>
<p>java等开源项目的繁华,跟PHP是不同的,之前也说过了,PHP区别于其他语言的根本点在于“快”,它在努力做到实现一个目标只有一条路可以走的方式,而以java为首的语言提供的是实现条条大路通罗马的方式,这样就导致了如果一个应用会有多种方案(开源项目),那么,其学习周期就会很长,有时候一个库达不到的功能需求,还得不得不去学习其他类库,这样做达不到“快”的目的。</p>
<p> </p>
<p>adobe也类似,它逐渐被内置的pdo取代了。毕竟PHP级别的类库效率远没有C写的模块高。</p>
<p> </p>
<div class="quote_title">fireflyc 写道</div>
<div class="quote_div">3.好吧,我只好列出一般性的优化过程了。一个互联网项目首先需要优化静态处理,扩大并发处理能力。如果决定采用apache那么要开启worker模式,打开监控模块,关闭不需要的模块,进行压力测试的度量,分布式处理,静态文件同步,动态文件转发。数据库参数的调整,根据度量调整各种buffer,设置索引,度量性能瓶颈点,作边界的测试得到边界点,针对边界点作限制。诸如此类,你觉得这些没有必要?你觉得PHP可以帮你处理一切么?或者有提供好的配置给你直接copy?</div>
<p> 貌似,其他开源的方案也没有你说的这些功能呀。就拿tomcat说,你怎么打开监控模块?怎么进行分布式处理?怎么进行动态文件转发?呵呵,都没有。再者说,如果你发布的是第一个版本的网站,没几个人访问,至于用这些功能么?当访问的人多了,有钱赚了,那搞什么不行呢?:) 这是一个运营过程的问题,而不是开发过程的问题。兄弟有些搞混了。</p>
<p> </p>
<p>数据库的调整就更不要说了,就连MySQL都是一样,除非你买企业级的软件,不然,就得手动改很多参数以进行优化,它在任何语言下都是一样的,这不能作为区别PHP与其他语言优劣的原因。而这也已经超出了本帖的讨论范围。</p>
<p> </p>
<p>因为PHP是建立在web server中的,因此,web server能支持什么,PHP就可以用什么。你需要优化的只是web server的一些功能,而java的开源引擎就不一样了,你不仅仅要优化web server,还要优化像tomcat等各种引擎,而且像tomcat这些引擎的性能优化非常困难,除非增加硬件投资。我做集群测试的时候深有体会。</p>
<p> </p>
<p> </p>
<div class="quote_title">fireflyc 写道</div>
<div class="quote_div">4.很好,php既然是为了互联网项目而生那么为什么整个社区要开展起一个向企业应用进军的浪潮呢?而且已经成为了php的一个事实前进方向。难道这个方向最后的结果不是谋杀PHP吗? 所以我的结论依然成立,如果PHP选择一个错误的目标,如果社区再继续推动这股浪潮。那么杀害PHP的元凶便是phper自己。</div>
<p> 我倒是没听过国外有哪家官方支持的PHP社区喊这个口号(难道是国内的社区??<img src="/images/smiles/icon_rolleyes.gif" alt="">),如果你找到了,麻烦贴出来个网址,我进去瞅瞅,然后再证明你的结论依然成立。现在光在这里误导别人没什么用。</p>
</div>
<p>1.我不知道跑在8080和跑在80端口会有什么本质区别,给你的调试带来了麻烦么?为你的学习带来了成本妈?你是ajp,apache2.2,这是风马牛不相干的事情,ajp是apache开发的一个通讯协议本意用于服务器之间的通讯,这个有什么关系么?</p>
<p>你说asp流行还给出了一个看似合理的理由,那么你确信这个理由成立吗?当年web出现是CGI在统治世界,后来人们开始用脚本写CGI了,再后来微软开发了一个脚本来代替那些编译型的语言,与此同时也有很多人提供了各种脚本和技术来减轻编译型CGI的痛苦。那么这个理由是很正常的,历史的发展选择了简单,人们需要简单所以创造了一些东西来减轻自己的痛苦。如此而已。如果让我在asp的错误和java的错误上选择我会选择有错误堆栈的java,能让我准确定定位到代码的位置。如果说有不懂的问异常什么意思也很正常,难道那个error xxx unexpected之类的能够让不懂的人看的更清楚么?难道没有人问马?</p>
<p> </p>
<p>2.ok,再次印证了为php提供广泛库的组织很少。几乎只有官方自己。。。这个让我想起了不堪重负的微软。如果说把这种社区的不繁荣当作一种没有必要作选择的理由的话,如果把选择作为一中累赘的话,如果觉得更多的东西以为着乱的话。那么<strong>请你静下来,仔细想一想,到底谁是大教堂,谁是集市,请仔细想一想开源的本意是不是独裁。</strong></p>
<p> </p>
<p>3.这种问题我不知道该怎么说,你的观点是认为把PHP丢到一个apache上就可以了。无所谓它是什么运行模式,甚至是pfork模式都可以,都能获得很高的性能。那么这不是PHP,是拯救一切的银弹了。你还在局现在作java必须用tomcat,而且只能用tomcat;作PHP必须用apache,而且只管代码就好了。至于你 说的web server部分的优化是指什么?仅仅是你的代码么?web server的参数吗?难道系统的整体性能是由于web server决定的马?这个问题扯远了,我无非是想说明一点PHP的性能快但是不意味着系统快。</p>
<p> </p>
<p>4.社区不是那家。。社区是一个环境。老大你睁开眼睛看看把。别的不用看了,但看javaeye的这个PHP板块把。从上之下你数框架。。。。。。。。。。难道这种还不足以说明问题吗?</p>
<p> </p>
36 楼 icewubin 2009-11-26  
既然某人说谁主张谁举证?那就说说,本质上为什么PHP“性能这么好”,确只适合做web开发,而不适合做其他事情?

不是PHP5以后也有OO了么?

为什么不适合做个PHP版的lucene,为什么不能很简洁明了的写个简单版连接池出来,为什么不能做复杂的算法(某些人认为),不都是OO语言了么。
35 楼 icewubin 2009-11-26  
引用
php可以不用每次都加载一堆东西,php有opcode cache,fastcgi和mod_php也都不会每次请求加载进程。

你没有了解我说的资源的意思啊。

资源不仅仅是进程、线程,或者是java中某些final static的编译器可优化的东西,不局限这些的。

例如有30个以上的拦截器(概念上的),对一串文本做一系列的操作,每一个拦截器都有不同的通途和初始化方式:
有的是定时读取本地的配置文件,根据配置文件进行处理;
有的是定时读取远程配置文件;
有的是定时读取远程数据库中的配置信息;
有的是记录整个拦截链的个数统计;
有的是加载某个数据来源的xml,反序列化成一个算法类;
等等。。。

也就是很多class加载到内存中,而且会有不同的参数,以及运行时的参数调整和复杂计算准备(这个很重要,复杂计算准备),这些东西让PHP来做,针对某个特殊的东西并不是不能做,但是处于性能考虑要绕很多弯,会搞得很复杂,还不能直接使用很多现成的算法或设计模式,因为这些算法和设计模式针对的语言都是有一定的内存管理的。
34 楼 icewubin 2009-11-26  
引用
不要重新发明轮子。

这个也很搞笑啊,MD5加密都有各种版本呢,难道因为最早C或C++实现了一个,然后其他语言就不需要实现了?

我这个类比的意思是说,有些算法,并没有上升到搜索引擎的高度,仅仅是个算法而已,会有各种语言的版本,但是往往PHP版在实现某些算法时就是麻烦。
33 楼 icewubin 2009-11-26  
PHP要比,去和rails比,和asp.net比,与其和java搞来搞去,不如去看看那些用asp.net的人是如何做网站的,效率有多高。
32 楼 icewubin 2009-11-26  
syre 写道
icewubin,你的那些是在完全不了解php的情况下说的。所以我劝你还是少说点自己不了解的东西。


前面已经有人说过,php可以不用每次都加载一堆东西,php有opcode cache,fastcgi和mod_php也都不会每次请求加载进程。性能上的结论是基于压力测试的结果。至于原因么,我认为是java应用服务器对每个请求还是处理了很多事情。而java的那些框架则做了更多的事情。看看出错的时候漫长的stack就知道了。直接在tomcat上跑servlet确实比php快,但是这样用还叫java么?
按unix文化,一个程序只做一件事,并把它做好。php自己没做web服务器的事情,这方面由性能更好的程序来实现。

比如按nginx+fastcgi方式,nginx就用了在前面处理请求,动态程序由php的fastcgi跑。nginx本身就有负载均衡功能,所以可以一个nginx加多个fastcgi应用服务器,服务器资源可以充分利用,也很容易扩展。而tomcat之类也还是需要另外的负载均衡,每个应用服务器还额外多做了web服务器的事。


逻辑在php这边做还是在数据库做是权衡方便和性能的结果,也并不是都放数据库。倒是java社区很多人挺喜欢用存储过程,那才是把逻辑都放数据库了。
4000万个ID只要112秒??居然说是只要…………
我用jdbc的感觉是,连接速度上和php差不多。取数据的性能还不如php。php的mysql扩展好歹是c写的。用上连接池的话另当别论。php也有持久链接,使用得当的话效果也挺好。

其实有一个php实现的lucene。不过php确实不适合做这个。但是有一句话你也知道。不要重新发明轮子。既然已经有挺好的实现,何必自己搞,拿来用就是了。基本上你遇到的问题别人也会遇到。其他类似的东西还有很多。比如消息队列,缓存服务等等。

对与大型网站,可扩展性就是一个大问题。大流量的网站不可能是一个机器能扛下来的。至于你说的,1000次请求写一次memcached,php也有apc可以实现。不过我并不认为这是一个好主意。比起由此产生的复杂性和出bug的可能这划不来。

至于工钱么,这个我不想多说。php熟练工基本都会crontab。就算不会也没太大关系。这本来是sa的事情。前面说的fastcgi, nginx什么的,对php本身都是透明的。只要sa都架好了,php程序员不用操心跑的是apache还是nginx。当然,java如果没用到什么特殊的东西,也不会在意后面是tomcat还是resin之类的。但是在应用程序部署上,php程序员需要对web服务器的了解比java程序员对应用服务器的了解的要求要小。顺便说一下,如果什么应用是得用上python的,普通java程序员也搞不定的。一般所谓的java高手也搞不定。这方面不仅仅是语言本身的事情,更多涉及到理论知识和算法。

php最大的优势其实也不在于人便宜。其实php程序员比java程序员便宜这件事本身也挺不符合市场经济的。完成同样的东西,花的时间少才是php这类语言更大的优势。php社区和java社区的差别也在于此。php社区更多的是关心怎么多快好省地快速完成需求,以及解决大流量网站的问题,java社区更多的是关心软件工程,怎么解决复杂的业务逻辑以及研究各种框架。

最后关于python虚拟机的问题,那问题不是python虚拟机本身造成的。而是为了防止一些没有为多核准备好的模块出问题而故意限制的。至于你说的google,麻烦你有点诚意把链接给出,谁主张谁举证。


1.一样的,你在不了解Java的情况下,也少说两句,你说的那些测试我又不是没见过,微软也有类似测试,怎么不和微软比?这些单纯的测试页面生成的速度有什么实际意义,实际大并发的线上测试才是真材实料的。我举几个例子,我们公司里也有单机的压力测试,例如jetty单机测下来确实如网上所说,比tomcat好一点,但是实际线上跑的时候,根本就是半斤八两。我刚才说的那31台机器之所以公用,就是因为31台上也是有PHP程序在跑的。我们公司特殊,正好两种程序都有。所以你不要动不动就说那些理论测试,要说理论测试,我一样可以找很多jdbc的测试给你看。

2.不要老说框架怎么怎么,框架是看你怎么用的,好比sun官方的框架,根本就不是那么用的,实际java应用的高性能的用法,根本就不是你们臆想的那样,包括写法也是,什么教材写的Spring配置方法,多半都是狗屁,实际工程哪有这么繁琐的。所以不要看了些帖子,看了些java相关的东西,就以为java做网站就是这么多做的,门外汉而已。

3.至于你说到额外的负载均衡,这个额外又怎么了?Tomcat6真要异步IO直接跑又不是不可以,我们在前面加了层apache更多的是为了管理和统计,而不是为了性能。要性能,是靠squid的,而且有不少squid假设的不是简单的水平扩展的,还会根据各地区做集中的页面缓存。

4.java社区的人喜欢用存储过程?你从哪里听来的?你知道领域建模么?不知道的话就去看看马丁的书吧,看完再来讨论。

5.4000万是外排序(如果你不清楚什么叫外排序我可以帮你解释一下的),看清楚了,有时间你自己写一个试试看啊,不要在这里叫嚣,自己写一个看看,先生成4000万个UUID,然后自己用自己写的外排序跑跑看,需要多长时间。

6.“比起由此产生的复杂性和出bug的可能这划不来。”你这句话我都无语了,这在java语言里是再简单不过的逻辑,我都不知道你说的复杂性从何而来。从网站架构上来说,分布式计算本来就是复杂的,搞不来就别搞。你认为facebook或者twitter的结构就简单了么?呵呵。可扩展性从来都没有通用的公式,都是根据各个网站的业务特点或者某个模块的业务特点专门定制的,不要以为有什么通用的可简单水平扩展的万能方法。在某些人眼里,好像某个应用能支持很高的并发就很了不起了。我们公司网站大概有40-50个应用,几乎每个应用都有集群,播放页仅仅是几十个应用中的一个而已,几十个应用的整合,那才是大问题呢,某一个应用的自身的集群根本就是小儿科的东西。

7.“php熟练工基本都会crontab。就算不会也没太大关系。这本来是sa的事情”这算什么话,你以为这些crontab都是简单的跑批就完了么?业务逻辑的复杂性转嫁到sa身上了?这不是扯蛋么。
对我们公司的java程序员来说,一样的啊,我们也从不操心什么apache之类的东西,都是搭好的东西。
我觉得你说话逻辑很有问题,工钱不多说,为什么不多说,这很重要啊。即使不谈工钱,你认为PHP高手很好招么,你招招看,一下子搞个十来个PHP熟练工(还要很熟练python),上哪找?
逻辑上还有问题的就是你说的算法了,难道php没有算法了,为什么有很多算法或设计模式没有PHP版,你想过么?PHP既然认为自己性能很好,为什么不能很简单的实现各种复杂算法?理由呢?计算机编程的本质难道不是算法么?虽然有简单的有复杂的。不能因为PHP简单,就说PHP没有算法,那些PHP大牛第一个跳起来。

你不了解java就不要随随便便说什么“一般所谓的java高手也搞不定”,JDK1.5中的并发包用起来是很简单的,从某种意义上来说,除去一些专门做并发的语言,java+JVM做多核的编程(多线程处理),是最方便,运行效率最高的了。

8.你不要搞错了,即使不考虑python,同样水平的招人,一定是PHP比java贵,而不是php便宜。至于你说“java社区更多的是关心软件工程”,没错确实有不少是做企业级,而不是互联网,但不代表java社区就没有人做大流量、大并发,别忘了google、阿里巴巴、淘宝、支付宝、网易、快钱都是大量使用java做互联网的。

9.真懒啊,搜一下都不肯:
http://www.oschina.net/news/5640?from=rss
引用
K:我听说Google将在其新项目中限制Python的使用,无疑这将大大减少Python代码和Python得到的支持。这是否确有其事还是只是谣传?

Collin Winter:的确,Google将限制Python的应用因为:Python不如Java和C++快,线程占有、内存使用都很高在使用Python开发 新系统的时候,我们深知如果负载增加了10倍或者100倍系统会怎样,开发出的服务会有多糟糕我想Python已经发展到了一个狭缝中,因此在选择时我们 应当权衡其优点和缺点,也许开发人员使用Python会很有效率,但随着系统的增大却会遇到许多平台级的性能限制。

31 楼 syre 2009-11-26  
icewubin,你的那些是在完全不了解php的情况下说的。所以我劝你还是少说点自己不了解的东西。


前面已经有人说过,php可以不用每次都加载一堆东西,php有opcode cache,fastcgi和mod_php也都不会每次请求加载进程。性能上的结论是基于压力测试的结果。至于原因么,我认为是java应用服务器对每个请求还是处理了很多事情。而java的那些框架则做了更多的事情。看看出错的时候漫长的stack就知道了。直接在tomcat上跑servlet确实比php快,但是这样用还叫java么?
按unix文化,一个程序只做一件事,并把它做好。php自己没做web服务器的事情,这方面由性能更好的程序来实现。

比如按nginx+fastcgi方式,nginx就用了在前面处理请求,动态程序由php的fastcgi跑。nginx本身就有负载均衡功能,所以可以一个nginx加多个fastcgi应用服务器,服务器资源可以充分利用,也很容易扩展。而tomcat之类也还是需要另外的负载均衡,每个应用服务器还额外多做了web服务器的事。


逻辑在php这边做还是在数据库做是权衡方便和性能的结果,也并不是都放数据库。倒是java社区很多人挺喜欢用存储过程,那才是把逻辑都放数据库了。
4000万个ID只要112秒??居然说是只要…………
我用jdbc的感觉是,连接速度上和php差不多。取数据的性能还不如php。php的mysql扩展好歹是c写的。用上连接池的话另当别论。php也有持久链接,使用得当的话效果也挺好。

其实有一个php实现的lucene。不过php确实不适合做这个。但是有一句话你也知道。不要重新发明轮子。既然已经有挺好的实现,何必自己搞,拿来用就是了。基本上你遇到的问题别人也会遇到。其他类似的东西还有很多。比如消息队列,缓存服务等等。

对与大型网站,可扩展性就是一个大问题。大流量的网站不可能是一个机器能扛下来的。至于你说的,1000次请求写一次memcached,php也有apc可以实现。不过我并不认为这是一个好主意。比起由此产生的复杂性和出bug的可能这划不来。

至于工钱么,这个我不想多说。php熟练工基本都会crontab。就算不会也没太大关系。这本来是sa的事情。前面说的fastcgi, nginx什么的,对php本身都是透明的。只要sa都架好了,php程序员不用操心跑的是apache还是nginx。当然,java如果没用到什么特殊的东西,也不会在意后面是tomcat还是resin之类的。但是在应用程序部署上,php程序员需要对web服务器的了解比java程序员对应用服务器的了解的要求要小。顺便说一下,如果什么应用是得用上python的,普通java程序员也搞不定的。一般所谓的java高手也搞不定。这方面不仅仅是语言本身的事情,更多涉及到理论知识和算法。

php最大的优势其实也不在于人便宜。其实php程序员比java程序员便宜这件事本身也挺不符合市场经济的。完成同样的东西,花的时间少才是php这类语言更大的优势。php社区和java社区的差别也在于此。php社区更多的是关心怎么多快好省地快速完成需求,以及解决大流量网站的问题,java社区更多的是关心软件工程,怎么解决复杂的业务逻辑以及研究各种框架。

最后关于python虚拟机的问题,那问题不是python虚拟机本身造成的。而是为了防止一些没有为多核准备好的模块出问题而故意限制的。至于你说的google,麻烦你有点诚意把链接给出,谁主张谁举证。







30 楼 icewubin 2009-11-26  
说句题外话,python的虚拟机不怎么样的,要充分利用目前的4核服务器CPU,那是几乎不可能的。

而且就最近google内部还限制员工使用python,原因自己去查吧。
29 楼 dusdong 2009-11-26  
杀鸡焉用宰牛刀?宰牛怎用杀鸡刀?

没什么好挣的。世界上有永远都需要杀鸡刀,也需要宰牛刀的。
28 楼 icewubin 2009-11-26  
syre 写道
每天8000万的PV,31台Tomcat,用php都用不了10台就能顶住。我估计java程序优化一下其实也用不着那许多。虽然从语言上说,php比java慢,但是java的应用服务器本身的复杂性拖累了java应用的性能。所以很多时候并比不上php。

php语言本身确实不适合做太复杂的业务逻辑算法。不过绝大多数情况下也没啥负载的业务逻辑算法可做。就是有,对java而言也未必会自己去实现。如果用的第三方应用,也就无所谓是啥语言实现的。比如用全文检索,用solr或者sphinx都是选择。另外,在一些涉及到低层的东西,java不是也得用jni么

说到连接池,php+mysql其实不怎么需要连接池。因为连接mysql的速度本来就很快,必要时也可以再用上持久连接。不比oracle,没了连接池就没法活。

说到效率,1000条记录在php和java里排序的差异是可以忽略的。除非有超过百万的数据才有得比较。而真有那么大数据
的时候,从数据库传回应用服务器的开销就足以抵消这点性能差异了。

你是搞java的,而且对php不了解。php也是有垃圾回收的,虽然是比较简单的引用计数方式。每个请求结束自动释放资源是只是防止程序员失误的一个功能而已。同样也可以让某些资源不在请求结束后释放,比如持久链接。对java而言,也很少会把数据放到请求的上下文环境之外,何况这种做法会对可扩展性带来不小麻烦。

至于后台任务,虽然不是php的强项,但是也不会有多大障碍。不能因为你们的php写的不好就说是php做不了这事。而对于一些php做不好的后台任务,我也会用python来写,而不是java。因为更方便比如你说到的图片检测。

楼主举的例子是不太合适。不过对于很多网站来说,尤其是web2.0应用,php确实是个很不错的选择。但对于ERP, CRM之类的,还得用java。


1.是不需要这么多,因为这31台是公用的,但是看你说这口气,唉。。。微观上来说网站性能瓶颈又不是在页面生成上,不要老说一句“java服务器端的复杂性”,那里复杂了,说出具体的东西来,我还说PHP每次请求都加载一堆东西复杂呢。

2.我说php不适合做复杂的业务逻辑,本质上是想说明phper习惯于把一些语言自己可以做的问题扔给数据库,这和jni有什么关系,jni调用什么呢?难道C么?能快多少?我用java外排序4000万个ID只要112秒(E4500的台式机),为什么还需要jni?

3.连接池的问题上你太搞笑了,这句话“连接mysql的速度本来就很快”根本就是马太效应,第一个人说了以后大多数人都以为很快,这个很快是相对的PHP自己原来的那种方式,如果不使用第三方的连接池,同样是连mysql,速度根本就不能和jdbc比的。

4.排序问题不要钻牛角尖,本来就是举例子,例如MD5加密之类的,网站刚开始会很简单,随着业务越来越复杂,各种算法就会越来越复杂,一个比较经典的例子就是搜索,最早的站内搜索(甚至于google建站之前),不都是各个网站自己写的?但是随着搜索这种应用的特殊性(相对一般逻辑,算法巨复杂),这个时候算法消耗系统资源的程度绝对是超过一半的数据库应用的。当然这个话题扯远了,搜索已经复杂到要专门的系统来处理了,不过可以听听,JE是ruby写的,好像搜索一样是用java的lucene吧。PHP语言既然也是主流语言,怎么不搞个php版的lucene呢?

5.对java来说,不存在这种说法“很少会把数据放到请求的上下文环境之外”,业务是什么特点,就是什么做法,可扩展性本来就是分布式计算中的一个小问题而已,例如在线用户统计为例,两种做法,第一种是用户每登录一次,就写一次远程的memcached或者数据库,第二种是每1000次登录再写远程的memcached或者数据库,同样都是把数据放到请求的上下文环境之外的分布式计算,但是第二种方式在java中实现就非常方便。

6.对,后台任务的例子是举的不好,那是例外一个话题,就是说,你的招人成本,你认为找一个精通PHP+crontab+python的人需要多少钱?我招一个java的才多少钱?

7.搞笑你去看看很多大型“web2.0应用”,前端web的语言都不是重点,网站的后台逻辑架构才是重点。
27 楼 wps2000 2009-11-26  
syre 写道
icewubin 写道
我觉得楼主没有清楚认识到为什么有些人说PHP的发展方向不对的问题。

PHP的优势本来就是草根+简单,可是目前PHP的发展貌似不是这样的,N多的人更喜欢用PHP4版本的,而不愿意以用PHP5版本。

有几位网友说的很多了,不再重复一些反驳的言论,举几个例子。

我们公司网站,不说所有吧,就说个播放页,每天8000万的PV,31台Tomcat。我举这个例子并不是想说Tomcat性能有多强,因为整个网站的架构好坏和核心的编程语言并没有直接关系,例如优酷就是PHP的,但是PV数也很高。

但是我们公司历史上正好有一段PHP转向Java的历程,原因有很多,我说一下个人感觉的和技术直接有关的一些细节吧。

个人以为php就是个模板语言而已,和高性能根本搭不边,也不需要高性能,从业务逻辑上来讲,典型的PHPer更多的是把业务逻辑堆砌在了数据库中了,而不是php代码中,有部分原因是php语言本身不适合做太复杂的业务逻辑算法。

php(主要是PHP4)本身的优点也是它的缺点,每次请求全部加载相关的资源,请求结束然后全部释放,这个特性对草根来说非常好,不用担心某些资源不被释放,不用担心内存泄漏的问题。但是这个优点恰恰是双刃剑,很明显,如果每次请求,在php代码中有很复杂的资源加载过程,每次请求都加载无疑是浪费系统资源。

举个例子,连接池,PHP无法自己实现,还不是靠第三方的C实现?为什么,因为PHP自己无法像某些语言那样,有一个全局的内存环境。

有人会说,这个不重要,大部分应用都是程序等数据库,瓶颈在数据库。恩,一句话扔给数据库,表面上看和php没关系了,那就再举个例子。

例如我从数据库中取1000个记录,然后按照较复杂的逻辑在内存中排序(假定排序算法复杂,不适合在数据库中操作),那么排序结果或者某些中间计算结果,对于java来说最简单的就是随便搞个static变量就可以了(java中如果要单击统计一台机器上的某些数字,只要搞个static AtomicInteger就能轻松搞定,而且性能极高),稍微复杂点的,用本地cache(其是还是java类),再复杂点考虑集群的话,用memcached,啊,有人又会跳出来说,php也可以用memcached,是啊,没错,是可以用,但是不需要任何数据动不动就放数据库或者memcached吧,毕竟有相当数量的数据是实时性要求不高,但是又没必要每次请求都要计算的,memcached毕竟是一次网络连接,速度没办法和本地计算相比的。

前面说到php的优点,自动释放资源,听起来有点像JVM中的垃圾回收,这个类比还算贴切吧,但是问题来了,java强其实就是强在JVM上,以前叫垃圾回收,其实就是内存管理(经过十几年的发展,JVM的内存管理已经非常先进了),相比之下php的只按照请求来自动释放资源的内存管理手法太单一了,如何算高性能呢,某些测评很片面的,没什么可看的,哪有什么网站,后台逻辑简单到只要展现页面就行了?这里再说一下数据库的问题,不能总拿数据库作挡箭牌,就算数据库是挡箭牌,功劳也不是php的,如果真要拿数据库说事,要说开发部署难易程度,还是asp.net最简单、最快,而不是php。

继续说,由于php的资深限制,我们的网站以前有不少是PHP+crontab来完成很多后台定时任务,现在的运维经常抱怨这些“垃圾”都清理不干净,说说是PHP,结果还是依赖OS的定时任务,如果是java来写,很多后台任务写起来超简单的,而且整个过程相对来说调试起来容易多了。

再举例子,写个程序,最多2000个网络并发,验证4000万个图片的有效性,用PHP写写看这种并发程序?不过这个例子不太好,因为不是web应用了。

PHP倒掉是不太可能的,但是也用不着用贬低其他解决方案的方式来提高PHP的地位吧。



每天8000万的PV,31台Tomcat,用php都用不了10台就能顶住。我估计java程序优化一下其实也用不着那许多。虽然从语言上说,php比java慢,但是java的应用服务器本身的复杂性拖累了java应用的性能。所以很多时候并比不上php。

php语言本身确实不适合做太复杂的业务逻辑算法。不过绝大多数情况下也没啥负载的业务逻辑算法可做。就是有,对java而言也未必会自己去实现。如果用的第三方应用,也就无所谓是啥语言实现的。比如用全文检索,用solr或者sphinx都是选择。另外,在一些涉及到低层的东西,java不是也得用jni么

说到连接池,php+mysql其实不怎么需要连接池。因为连接mysql的速度本来就很快,必要时也可以再用上持久连接。不比oracle,没了连接池就没法活。

说到效率,1000条记录在php和java里排序的差异是可以忽略的。除非有超过百万的数据才有得比较。而真有那么大数据
的时候,从数据库传回应用服务器的开销就足以抵消这点性能差异了。

你是搞java的,而且对php不了解。php也是有垃圾回收的,虽然是比较简单的引用计数方式。每个请求结束自动释放资源是只是防止程序员失误的一个功能而已。同样也可以让某些资源不在请求结束后释放,比如持久链接。

至于后台任务,虽然不是php的强项,但是也不会有多大障碍。不能因为你们的php写的不好就说是php做不了这事。而对于一些php做不好的后台任务,我也会用python来写,而不是java。因为更方便比如你说到的图片检测。

楼主举的例子是不太合适。不过对于很多网站来说,尤其是web2.0应用,php确实是个很不错的选择。但对于ERP, CRM之类的,还得用java。



神仙的结论我是赞同的,对很多网站来说,PHP是个很不错的选择。

1、但是java的应用服务器本身的复杂性拖累了java应用的性能
坦白的说,Nginx、Apache等在跑静态页面的时候,确实比Tomcat高效得多,但Nginx + PHP FastCGI 或者 Apache ModPHP在跑纯PHP内容的时候,性能是不及同等复杂程度跑在Tomcat的JSP的,而且性能要低很多。Java的应用服务器作为容器,其实是非常高效的,不要那它和Nginx、Apache比

2、说到连接池,php+mysql其实不怎么需要连接池
实际上我现在总是得用PHP连接Oracle,我觉得,连接池其实是很重要的。PHP不能永远使用MySQL,pconnect这种粗放的资源管理方式其实是有问题的,第一,不很高效(非常少的连接被稀释在大量的PHP进程或者线程TLS中,导致生产环境下pconnect效率并不高);第二,无法控制连接数量(很常见,DBA要求我控制连接数为一个很小的数)。
26 楼 magician 2009-11-26  
市面上任何一种语言,只要你能找出它的100个优点,我就必然能够给你找出它的100个缺点;反之,只要你能找出它的100个缺点,我就必然能够给你找出它的100个优点

为什么这么想不开,要用一种狭隘的眼光来比较甚至预言?
25 楼 syre 2009-11-26  
icewubin 写道
我觉得楼主没有清楚认识到为什么有些人说PHP的发展方向不对的问题。

PHP的优势本来就是草根+简单,可是目前PHP的发展貌似不是这样的,N多的人更喜欢用PHP4版本的,而不愿意以用PHP5版本。

有几位网友说的很多了,不再重复一些反驳的言论,举几个例子。

我们公司网站,不说所有吧,就说个播放页,每天8000万的PV,31台Tomcat。我举这个例子并不是想说Tomcat性能有多强,因为整个网站的架构好坏和核心的编程语言并没有直接关系,例如优酷就是PHP的,但是PV数也很高。

但是我们公司历史上正好有一段PHP转向Java的历程,原因有很多,我说一下个人感觉的和技术直接有关的一些细节吧。

个人以为php就是个模板语言而已,和高性能根本搭不边,也不需要高性能,从业务逻辑上来讲,典型的PHPer更多的是把业务逻辑堆砌在了数据库中了,而不是php代码中,有部分原因是php语言本身不适合做太复杂的业务逻辑算法。

php(主要是PHP4)本身的优点也是它的缺点,每次请求全部加载相关的资源,请求结束然后全部释放,这个特性对草根来说非常好,不用担心某些资源不被释放,不用担心内存泄漏的问题。但是这个优点恰恰是双刃剑,很明显,如果每次请求,在php代码中有很复杂的资源加载过程,每次请求都加载无疑是浪费系统资源。

举个例子,连接池,PHP无法自己实现,还不是靠第三方的C实现?为什么,因为PHP自己无法像某些语言那样,有一个全局的内存环境。

有人会说,这个不重要,大部分应用都是程序等数据库,瓶颈在数据库。恩,一句话扔给数据库,表面上看和php没关系了,那就再举个例子。

例如我从数据库中取1000个记录,然后按照较复杂的逻辑在内存中排序(假定排序算法复杂,不适合在数据库中操作),那么排序结果或者某些中间计算结果,对于java来说最简单的就是随便搞个static变量就可以了(java中如果要单击统计一台机器上的某些数字,只要搞个static AtomicInteger就能轻松搞定,而且性能极高),稍微复杂点的,用本地cache(其是还是java类),再复杂点考虑集群的话,用memcached,啊,有人又会跳出来说,php也可以用memcached,是啊,没错,是可以用,但是不需要任何数据动不动就放数据库或者memcached吧,毕竟有相当数量的数据是实时性要求不高,但是又没必要每次请求都要计算的,memcached毕竟是一次网络连接,速度没办法和本地计算相比的。

前面说到php的优点,自动释放资源,听起来有点像JVM中的垃圾回收,这个类比还算贴切吧,但是问题来了,java强其实就是强在JVM上,以前叫垃圾回收,其实就是内存管理(经过十几年的发展,JVM的内存管理已经非常先进了),相比之下php的只按照请求来自动释放资源的内存管理手法太单一了,如何算高性能呢,某些测评很片面的,没什么可看的,哪有什么网站,后台逻辑简单到只要展现页面就行了?这里再说一下数据库的问题,不能总拿数据库作挡箭牌,就算数据库是挡箭牌,功劳也不是php的,如果真要拿数据库说事,要说开发部署难易程度,还是asp.net最简单、最快,而不是php。

继续说,由于php的资深限制,我们的网站以前有不少是PHP+crontab来完成很多后台定时任务,现在的运维经常抱怨这些“垃圾”都清理不干净,说说是PHP,结果还是依赖OS的定时任务,如果是java来写,很多后台任务写起来超简单的,而且整个过程相对来说调试起来容易多了。

再举例子,写个程序,最多2000个网络并发,验证4000万个图片的有效性,用PHP写写看这种并发程序?不过这个例子不太好,因为不是web应用了。

PHP倒掉是不太可能的,但是也用不着用贬低其他解决方案的方式来提高PHP的地位吧。



每天8000万的PV,31台Tomcat,用php都用不了10台就能顶住。我估计java程序优化一下其实也用不着那许多。虽然从语言上说,php比java慢,但是java的应用服务器本身的复杂性拖累了java应用的性能。所以很多时候并比不上php。

php语言本身确实不适合做太复杂的业务逻辑算法。不过绝大多数情况下也没啥负载的业务逻辑算法可做。就是有,对java而言也未必会自己去实现。如果用的第三方应用,也就无所谓是啥语言实现的。比如用全文检索,用solr或者sphinx都是选择。另外,在一些涉及到低层的东西,java不是也得用jni么

说到连接池,php+mysql其实不怎么需要连接池。因为连接mysql的速度本来就很快,必要时也可以再用上持久连接。不比oracle,没了连接池就没法活。

说到效率,1000条记录在php和java里排序的差异是可以忽略的。除非有超过百万的数据才有得比较。而真有那么大数据
的时候,从数据库传回应用服务器的开销就足以抵消这点性能差异了。

你是搞java的,而且对php不了解。php也是有垃圾回收的,虽然是比较简单的引用计数方式。每个请求结束自动释放资源是只是防止程序员失误的一个功能而已。同样也可以让某些资源不在请求结束后释放,比如持久链接。对java而言,也很少会把数据放到请求的上下文环境之外,何况这种做法会对可扩展性带来不小麻烦。

至于后台任务,虽然不是php的强项,但是也不会有多大障碍。不能因为你们的php写的不好就说是php做不了这事。而对于一些php做不好的后台任务,我也会用python来写,而不是java。因为更方便比如你说到的图片检测。

楼主举的例子是不太合适。不过对于很多网站来说,尤其是web2.0应用,php确实是个很不错的选择。但对于ERP, CRM之类的,还得用java。

24 楼 icewubin 2009-11-26  
我觉得楼主没有清楚认识到为什么有些人说PHP的发展方向不对的问题。

PHP的优势本来就是草根+简单,可是目前PHP的发展貌似不是这样的,N多的人更喜欢用PHP4版本的,而不愿意以用PHP5版本。

有几位网友说的很多了,不再重复一些反驳的言论,举几个例子。

我们公司网站,不说所有吧,就说个播放页,每天8000万的PV,31台Tomcat。我举这个例子并不是想说Tomcat性能有多强,因为整个网站的架构好坏和核心的编程语言并没有直接关系,例如优酷就是PHP的,但是PV数也很高。

但是我们公司历史上正好有一段PHP转向Java的历程,原因有很多,我说一下个人感觉的和技术直接有关的一些细节吧。

个人以为php就是个模板语言而已,和高性能根本搭不边,也不需要高性能,从业务逻辑上来讲,典型的PHPer更多的是把业务逻辑堆砌在了数据库中了,而不是php代码中,有部分原因是php语言本身不适合做太复杂的业务逻辑算法。

php(主要是PHP4)本身的优点也是它的缺点,每次请求全部加载相关的资源,请求结束然后全部释放,这个特性对草根来说非常好,不用担心某些资源不被释放,不用担心内存泄漏的问题。但是这个优点恰恰是双刃剑,很明显,如果每次请求,在php代码中有很复杂的资源加载过程,每次请求都加载无疑是浪费系统资源。

举个例子,连接池,PHP无法自己实现,还不是靠第三方的C实现?为什么,因为PHP自己无法像某些语言那样,有一个全局的内存环境。

有人会说,这个不重要,大部分应用都是程序等数据库,瓶颈在数据库。恩,一句话扔给数据库,表面上看和php没关系了,那就再举个例子。

例如我从数据库中取1000个记录,然后按照较复杂的逻辑在内存中排序(假定排序算法复杂,不适合在数据库中操作),那么排序结果或者某些中间计算结果,对于java来说最简单的就是随便搞个static变量就可以了(java中如果要单击统计一台机器上的某些数字,只要搞个static AtomicInteger就能轻松搞定,而且性能极高),稍微复杂点的,用本地cache(其是还是java类),再复杂点考虑集群的话,用memcached,啊,有人又会跳出来说,php也可以用memcached,是啊,没错,是可以用,但是不需要任何数据动不动就放数据库或者memcached吧,毕竟有相当数量的数据是实时性要求不高,但是又没必要每次请求都要计算的,memcached毕竟是一次网络连接,速度没办法和本地计算相比的。

前面说到php的优点,自动释放资源,听起来有点像JVM中的垃圾回收,这个类比还算贴切吧,但是问题来了,java强其实就是强在JVM上,以前叫垃圾回收,其实就是内存管理(经过十几年的发展,JVM的内存管理已经非常先进了),相比之下php的只按照请求来自动释放资源的内存管理手法太单一了,如何算高性能呢,某些测评很片面的,没什么可看的,哪有什么网站,后台逻辑简单到只要展现页面就行了?这里再说一下数据库的问题,不能总拿数据库作挡箭牌,就算数据库是挡箭牌,功劳也不是php的,如果真要拿数据库说事,要说开发部署难易程度,还是asp.net最简单、最快,而不是php。

继续说,由于php的资深限制,我们的网站以前有不少是PHP+crontab来完成很多后台定时任务,现在的运维经常抱怨这些“垃圾”都清理不干净,说说是PHP,结果还是依赖OS的定时任务,如果是java来写,很多后台任务写起来超简单的,而且整个过程相对来说调试起来容易多了。

再举例子,写个程序,最多2000个网络并发,验证4000万个图片的有效性,用PHP写写看这种并发程序?不过这个例子不太好,因为不是web应用了。

PHP倒掉是不太可能的,但是也用不着用贬低其他解决方案的方式来提高PHP的地位吧。
23 楼 coolcoolhot 2009-11-26  
<div class="quote_title">yipsilon 写道</div>
<div class="quote_div">
<p> </p>
<div class="quote_title">fireflyc 写道</div>
<div class="quote_div">4.很好,php既然是为了互联网项目而生那么为什么整个社区要开展起一个向企业应用进军的浪潮呢?而且已经成为了php的一个事实前进方向。难道这个方向最后的结果不是谋杀PHP吗? 所以我的结论依然成立,如果PHP选择一个错误的目标,如果社区再继续推动这股浪潮。那么杀害PHP的元凶便是phper自己。</div>
<p> 我倒是没听过国外有哪家官方支持的PHP社区喊这个口号(难道是国内的社区??<img src="/images/smiles/icon_rolleyes.gif" alt="">),如果你找到了,麻烦贴出来个网址,我进去瞅瞅,然后再证明你的结论依然成立。现在光在这里误导别人没什么用。</p>
</div>
<p><br>顶啊,php社区甚至都不建议你使用那些乱七八糟的框架,倒底是哪个社区说php要进军企业应用了。</p>
22 楼 java_eye_1 2009-11-26  
不要在讨论这个无聊的问题了。php本身开源,如果热爱它,发现了他的错误,就想办法改进它吧。

21 楼 yipsilon 2009-11-26  
jamesvz 写道
为什么总是要拿php和java什么的比呢,蚂蚁就是蚂蚁,自有一片天地,干不了大象的活,大象要踩死蚂蚁也没那么容易。


这位兄弟说的有道理,事实就是这样的。

大家都拿一些流行的语言及其社区来进行比较,殊不知PHP与其他语言有很明显的区别,因此做这样的比较就是拿蚂蚁和大象比较一样。

用java说事儿主要是偶才疏学浅,只接触过JAVA和LINUX社区,所谓枪打出头鸟嘛,既然JAVA排在第一,拿它来说事儿就更具说明性。呵呵。
20 楼 jamesvz 2009-11-26  
为什么总是要拿php和java什么的比呢,蚂蚁就是蚂蚁,自有一片天地,干不了大象的活,大象要踩死蚂蚁也没那么容易。
19 楼 yipsilon 2009-11-26  
<p> </p>
<div class="quote_title">fireflyc 写道</div>
<div class="quote_div">1.jsp我没有发现需要配置,无非是安装jdk,运行tomcat仅仅如此而已。难道你不下载php,安装http server吗?如果你认为这个影响开发效率那就有点说不过去了。asp简单么?当年IIS给我报的asp错误没有一个能让我准确定位到错误代码的。</div>
 
<p>呵呵,你用过tomcat么?难道你发布的程序时跑在8080端口?晕... 想当初配置ajp是多么麻烦啊,从apache 2.2开始才有所改善,但是还是需要配置的。</p>
<p> </p>
<p>想当初ASP网站是多么地流行啊,不是因为它多么强大,而是它很简单,非常容易入门。至于你有错误找不到,我曾经就看到好多java开发人员在论坛上抱怨tomcat抛出各种不可理解的异常,后来发现那是个人技能问题,而不是语言本身的问题。</p>
<p> </p>
<p> </p>
<div class="quote_title">fireflyc 写道</div>
<div class="quote_div">2.ok,你提到了这个项目。这个是PHP同一个组织下的开源项目可以说是PHP钦点的标准库。后台无疑是zend。那么我再列举一些把,smarty模板引擎不属于任何开源组织,还有一个曾经非常好用的ADODB也是个人的都已经N久没有更新了,还有一些效颦般的框架。就这些了么?这叫做繁荣?看看C、C++的国度,从编辑器到server,从工具库到线程库、内存管理库,不愧是发展了真久,apache,gnu, monzilla等等开源组织一篇繁华。看看java,redhat,spring source,apache,opensymphony,也是一篇繁华。而PHP呢?你还能数出来几个? </div>
<p> </p>
<p>smarty建立之初是PHP官方提供支持的,后来分离了,一方面是开发人员的问题,另一方面是它与后来官方所制定的策略相违背。目前官方所支持的核心部分就是C写的模块,而不是PHP写的顶层应用,如果当时smarty作为PHP模块来写的话,那估计现在早就是PHP核心函数了。</p>
<p> </p>
<p>java等开源项目的繁华,跟PHP是不同的,之前也说过了,PHP区别于其他语言的根本点在于“快”,它在努力做到实现一个目标只有一条路可以走的方式,而以java为首的语言提供的是实现条条大路通罗马的方式,这样就导致了如果一个应用会有多种方案(开源项目),那么,其学习周期就会很长,有时候一个库达不到的功能需求,还得不得不去学习其他类库,这样做达不到“快”的目的。</p>
<p> </p>
<p>adobe也类似,它逐渐被内置的pdo取代了。毕竟PHP级别的类库效率远没有C写的模块高。</p>
<p> </p>
<div class="quote_title">fireflyc 写道</div>
<div class="quote_div">3.好吧,我只好列出一般性的优化过程了。一个互联网项目首先需要优化静态处理,扩大并发处理能力。如果决定采用apache那么要开启worker模式,打开监控模块,关闭不需要的模块,进行压力测试的度量,分布式处理,静态文件同步,动态文件转发。数据库参数的调整,根据度量调整各种buffer,设置索引,度量性能瓶颈点,作边界的测试得到边界点,针对边界点作限制。诸如此类,你觉得这些没有必要?你觉得PHP可以帮你处理一切么?或者有提供好的配置给你直接copy?</div>
<p> 貌似,其他开源的方案也没有你说的这些功能呀。就拿tomcat说,你怎么打开监控模块?怎么进行分布式处理?怎么进行动态文件转发?呵呵,都没有。再者说,如果你发布的是第一个版本的网站,没几个人访问,至于用这些功能么?当访问的人多了,有钱赚了,那搞什么不行呢?:) 这是一个运营过程的问题,而不是开发过程的问题。兄弟有些搞混了。</p>
<p> </p>
<p>数据库的调整就更不要说了,就连MySQL都是一样,除非你买企业级的软件,不然,就得手动改很多参数以进行优化,它在任何语言下都是一样的,这不能作为区别PHP与其他语言优劣的原因。而这也已经超出了本帖的讨论范围。</p>
<p> </p>
<p>因为PHP是建立在web server中的,因此,web server能支持什么,PHP就可以用什么。你需要优化的只是web server的一些功能,而java的开源引擎就不一样了,你不仅仅要优化web server,还要优化像tomcat等各种引擎,而且像tomcat这些引擎的性能优化非常困难,除非增加硬件投资。我做集群测试的时候深有体会。</p>
<p> </p>
<p> </p>
<div class="quote_title">fireflyc 写道</div>
<div class="quote_div">4.很好,php既然是为了互联网项目而生那么为什么整个社区要开展起一个向企业应用进军的浪潮呢?而且已经成为了php的一个事实前进方向。难道这个方向最后的结果不是谋杀PHP吗? 所以我的结论依然成立,如果PHP选择一个错误的目标,如果社区再继续推动这股浪潮。那么杀害PHP的元凶便是phper自己。</div>
<p> 我倒是没听过国外有哪家官方支持的PHP社区喊这个口号(难道是国内的社区??<img src="/images/smiles/icon_rolleyes.gif" alt="">),如果你找到了,麻烦贴出来个网址,我进去瞅瞅,然后再证明你的结论依然成立。现在光在这里误导别人没什么用。</p>
18 楼 sbkyv 2009-11-26  
asp没有被淘汰吧。

相关推荐

    秒盾代码 PHP5秒盾代码_5秒安全检查源码.zip

    隔一二天不能访问,网站的排名收录会掉的很厉害而且影响以后 正因为这样,出现了很多网络黑客专门以攻击他人网站谋生 今天就给大家分享一个能有效防止一下小 CC. 用过百度云加速服务的网站都知道,在第一次打开后...

    开源php搜索引擎-蜘蛛程序

    4. **索引建立**:将提取的关键词和对应的URL存储到MySQL数据库中,形成倒排索引,便于快速查找。 5. **查询处理**:当用户输入搜索词时,搜索引擎会根据这些词在索引中的位置返回相关网页。 在实际应用中,为了...

    php-poo:练习一些遵循SOLID原则PHP POO

    7. **SOLID原则的实际应用**:项目中可能会有各种示例,如使用接口来实现开闭原则,通过策略模式应用SRP,利用抽象类或接口实现LSP,以及如何在设计中避免违反ISP和DIP。 8. **面向对象设计模式**:SOLID原则通常与...

    php之75道经典逻辑思考题

    3. 将5升水壶中的水倒掉,然后将6升水壶中剩下的1升水倒入5升水壶中; 4. 再次将6升水壶装满水; 5. 用6升水壶中的水继续向5升水壶中倒水,直至5升水壶满,此时6升水壶中会剩下恰好3升水。 通过这种方式,我们可以...

    PHP读取文件内容后清空文件示例代码

    如果文件不存在,`fopen`会返回false。 接着,为了保证文件内容读取和清空操作的原子性,我们需要对文件加锁。在PHP中,可以使用`flock`函数来加锁,该函数同样需要文件句柄作为参数,并指明要加的锁类型。在示例...

    php 猴子摘桃的算法

    问题描述了一只猴子在连续十天内吃桃子的过程,每天吃掉剩下桃子的一半再加一个,到第十天时仅剩一个桃子。我们需要通过编程计算出猴子最初摘了多少个桃子。 解决这个问题的思路是从第十天开始往回推算,每次根据...

    Sphider-plus 2.2

    同时,它可能会过滤掉广告、重复内容和非正文部分。 4. **关键词提取与索引**:Sphider-plus 会分析网页内容,识别关键词,并建立倒排索引,这是一种快速查找文档中包含特定词的高效方法。索引过程可能包括词干提取...

    ecshop中如何添加限时抢购功能可以看到一个倒计时

    要实现ecshop中的限时抢购功能并展示倒计时,我们需要对ecshop系统的模板、后台管理文件以及数据库进行一些修改和添加相应的代码,以实现抢购倒计时的效果。以下是详细的实现步骤: 1. 修改商品详情模板文件,以便...

    代码解耦之道_黄朝晖_PHPCON2019.pdf

    里氏替换原则(Liskov Substitution Principle):子类型必须能够替换掉它们的父类型。 5. 开闭原则(Open/Closed Principle):软件实体应当对扩展开放,对修改关闭。 6. 最少知识原则(Least Knowledge ...

    grub4dos-V0.4.6a-2017-02-04更新

    --timeout=[x]=[y]=[color] 倒计时位置、颜色。单位:列,行,24位色彩。 2015-05-14(yaya) 改进 NTFS 文件系统: 对于驻留属性文件(小文件),可以写,也可用 blocklist 显示信息。 对于非驻留属性列表,...

    TU-training

    【标题】"TU-training" 指的可能是一个关于软件开发的培训项目,重点是讲解SOLID原则和Test-Driven ...通过参与这个项目,学员不仅会学习到理论知识,还能获得实际操作的经验,从而提高其作为专业PHP开发者的技能。

    JavaScript应用177例

    5.3.htm 倒计时效果 5.4.htm 模拟时钟 5.5.htm 显示农历日期 5.6.htm 温度计样式时钟 5.7.htm 位置固定的时钟 第6章(\cha06) 6.1.htm HTML事件绑定 6.2....

    就要来娱乐论坛动网7.1 SP1 1114修改版

    我不想就这么放弃掉了,不然心血白白浪费,发布完了,过几天就改PHP了,这个可以算是终结版吧,但如果大家有问题,只要我能帮忙的我一定尽力,希望大家能支持!管理员帐号:ID: admin PASSWORD:admin888音乐后台帐号...

    23种 设计模式---面向对象的基本原则

    3. 里氏替换原则(Liskov Substitution Principle, LSP):子类型必须能够替换掉它们的基类型。这保证了继承不会破坏原有的程序行为。 4. 接口隔离原则(Interface Segregation Principle, ISP):不应该强迫客户端...

    gdkp

    在GDKP中,团队成员通过击杀游戏内的高级首领获得金币,这些金币随后被用于竞拍首领掉落的稀有物品。这种方式旨在优化团队资源分配,提高玩家参与度和游戏体验。 在HTML方面,虽然GDKP本身与HTML(超文本标记语言)...

    Excel百宝箱8.0

    【禁止重复值】:可以指定某列不允许重复,指定后该列输入重复值时会自动提示 【标示重复值】:将重复出现的数据用不同颜色分别标示出来,不同重复值用不同颜色 【删除空白单元格所在行】:输入1则删除空白行(整行...

Global site tag (gtag.js) - Google Analytics