PHP和性能


17

我总是听到PHP用于中小型网站,而.NET和Java用于企业应用程序。我的问题是关于PHP的。为什么PHP不是企业Web应用程序的好选择?是否因为Web应用程序变得更大而使PHP变慢,因为它是一种解释语言?

我知道企业界会选择.NET或J2EE,因为它们与其产品集成在一起,并且由于后端服务等原因。但是,如果我们只有PHP来构建站点和Web应用程序,那么我们如何使用它来实现良好的性能呢?大网站?

简而言之,PHP的性能和网站的大小之间是否有关系?什么因素使PHP不适合用于大型站点?


1
Mediawiki(维基百科的引擎)是用PHP编写的,并且使其表现良好,但这并不能证明任何事情。可能是一个小众案例。
Michael K'3

2
@MichaeltheGhost使用Alexa排名前50位(甚至可能更多)的网站是一个糟糕的例子,因为它们的数量如此之高,以至于他们的解决方案是高度定制的,并且针对该流量水平进行了微调,并且实际上并不相同技术了。
Ryathal 2012年

1
Facebook也在使用PHP。还要注意,这意味着可伸缩性,而不是性能,但是您知道其中的区别吧?另一个示例是freemobile,出于可扩展性原因,该网站从Java用PHP重写了其网站。
deadalnix 2012年

“目前,尽管某些服务继续使用Zend Engine PHP,但Wikimedia Foundation的Mediawiki中的大多数PHP代码都使用HHVM JIT编译器。” zh.wikipedia.org/wiki/Wikipedia:FAQ/技术,这是Facebook为加快php速度而创建的(这是他们随后编译的php到c ++转换器)。它行之有效,只是您不能仅仅因为它是用php编写的,所以速度总是一样的。这取决于您在这种意义上对代码的处理方式……
pqsk

Answers:


19

性能可能不是因素之一。对于动态语言,PHP实际上表现很好。根据任务,它可能会或可能不会击败其他技术。应用程序模型完全不同,无法直接将其与Java或ASP.NET进行比较。即使存在可测量的速度差异,它也不大,并且可能是线性的,这意味着可以通过添加更多硬件来解决它。而且,编程语言本身很少成为瓶颈-除非您正在编写确实占用大量CPU的内容,否则算法,数据库访问,网络带宽和I / O通常是常见的罪魁祸首。

在PHP上使用ASP.NET或Java的原因更可能包括:

  • 平台集成。ASP.NET提供了与.NET和基础Windows操作系统的广泛集成。
  • 通用性。PHP是专门为Web设计的,而.NET和Java是通用平台。使用Java或.NET,您可以轻松地将桌面和Web前端都添加到同一共享代码上,而PHP不太适合编写桌面应用程序。
  • 代码组织功能。Java和.NET从一开始就是为OOP设计的,而PHP中的OOP只是事后的想法。PHP是最近才引入名称空间的,与.NET和Java必须提供的名称空间相比,它们是有限且笨拙的。企业风格的编程通常严重依赖于OOP,这使得PHP成为次要的选择。

产生这种效果的另一个原因是,PHP是免费的(如啤酒中一样)并且无处不在-每个便宜的共享Web托管公司的标准软件包中都包含PHP,但是.NET或Java服务器的成本要高得多。因此,大量的小型网站都使用PHP,不是因为它是完成工作的最佳工具,而是手头的唯一工具。

并不是说PHP不适合大型项目-只是与“企业级”编程不兼容。它的优势在其他地方,如果您可以利用它们,则可以像使用任何其他Web技术一样轻松地构建大型应用程序。


2
一个小问题,您可以以与LAMP共享托管相同的价格获得ASP.NET共享托管。问题是,大多数人在搜索时发现的第一个地方是针对中小型企业的市场,价格更高。
jfrankcarr 2012年

+1,非常好说&总结。对于大多数性能不佳的应用程序,瓶颈很少是该语言。
GrandmasterB 2012年

1
是的,但不要认为Java是解决方案-我不幸使用了Oracle等公司的许多“企业”应用程序。几乎所有这些都可以用功能几乎没有减少的PHP OSS应用程序代替,但是性能和可用性却大大提高了。
gbjbaanb 2012年

3
@gbjbaanb:在这种情况下,Java不是解决方案,因为没有问题。而且,是否开放源代码与该主题绝对无关。
tdammers 2012年

@GrandmasterB是和否。例如,Java有许多内部同步原语,而PHP没有。编写可伸缩的Java代码需要更多的纪律。Freemobile是这种效果的真实例子。但是,由于可伸缩性不仅取决于前端(例如,数据库在这里非常重要),因此无论如何都需要考虑它。
deadalnix 2012年

13

您会在业务逻辑复杂程度(简单网站与企业解决方案)之间混淆流量(“中小型网站”通常是指中小型流量的网站)。在第二种情况下,性能不是关键因素。

例如,Facebook是高流量网站,但它不是企业应用程序。另一方面,基于Java应用程序服务器的Intranet过多,甚至无法处理中型网站的流量。

性能方面的PHP并不是最好的选择,但是也不错。特别是与其他动态语言相比。但是,同样,原始性能不是最重要的因素。创建高流量的网站更多是关于在体系结构级别上优化可伸缩性。


为什么企业如此鄙视PHP?原因很少,首先是它的糟糕的安全声誉。其次,它被视为业余爱好者创建丑陋,难以管理的HTML-PHP意大利面条代码的语言。即使存在成熟的MVC框架,这种看法仍然存在。我猜想PHP的原始作者认为您不需要框架无济于事。这些无精打采,几乎没有编程技能的业余爱好者称为“ PHP程序员”的事实也无济于事。第三个原因是,任何有经验的程序员都会同意,PHP只是被错误地设计为一种语言。您可以清楚地看到它是由网站站长设计的,

是的,在企业中,一切都与系统集成有关,PHP也不起作用。通过足够的努力,您可以创建C模块。有PHP-Java桥,使用起来很繁琐。除此之外,您没有太多。创建Boost :: PHP(与C ++集成)的尝试失败。在JVM上运行的PHP克隆与PHP的兼容性几乎没有100%的兼容性(请注意,没有正式的PHP语言定义,唯一的参考是默认实现)。


6

不知道为什么人们声称PHP适用于中小型网站。就我所知,这是不正确的。我知道一些PHP支持的网站从小开始,然后发展成为我国的前100个网站。他们仍然使用PHP,并且没有计划对其进行任何更改。

可能促使人们得出这样的结论的事情是,在Java(我猜也是.NET)的情况下,应用程序缩放是在文档和文献中经常提到的一个术语。那里的大多数应用程序服务器都支持某种形式的集群,这种集群可以随着“受欢迎程度”的增长而迅速增加“马力”。如果使用PHP,则必须自己构建集群。您可以使用不同的组件以多种方式进行操作,并且您必须对PHP的内部运作知识有所了解。这可能使人们认为,使用PHP单一服务器(以及中小型网站)对于PHP来说是死胡同。


3

没有只有企业Web应用程序这样的东西。在企业环境中,您通常具有完整的企业系统,其中Web部件与整个系统相比非常小。网络下有许多系统可以执行批处理,队列消息传递,企业集成,网关等等。顶部的活动可能不仅限于

虽然PHP对Web有利,但对其他类型的分布式系统却不利。而且由于您使用Java或.NET来完成所有这些系统,因此很容易在同一平台上而不是在PHP中构建Web堆栈。


1

我要说的是,PHP的问题源于性能,而不是安全漏洞的历史。毫无疑问,可以用PHP编写任何特定大小或复杂性的网站,并且仍然可以维护安全性,但是随着复杂性的增加,维护安全性将变得更加困难。

另一方面,从第一天开始,Java就至少具有一些关于安全性的想法。尽管这些并不完全适合大多数当前的部署(最初的想法主要是针对applet,而不是服务小程序),但是强调的确意味着其功能更适合于生成安全代码。而且,当然,它也没有停滞不前-由于小程序现在主要是一个死问题,因此Java已被重新定义以强调它现在(大部分)所占据的服务器端角色。

由于.NET至少尝试与Java几乎直接竞争,因此在这方面它提供了几乎相同的特性。你可以说(和拥护者两个阵营做的)太阳或微软在是否确实在这方面做得更好,但一个简单的事实都有人队真的在其上的工作给他们带来了相当严重的优势PHP在这尊重。


0

1)表现:在这一点上,有几个答案被误导了。
Phalanger项目(我过去曾经成功使用过)允许您在PHP中使用C#代码,反之亦然,或者完全从一种语言切换到另一种语言。您可能需要进行一些更改,但是随着他们的不断努力,它会越来越好。
我的观点是,他们发现使用C#的平均速度是2.5倍(或者说.NET,VB也会这样做,最后是MSIL)。
使用Wordpress查看他们的测试,它吸引了很多开发人员。

现在我们还没有看到他,但是总有家伙会告诉你FaceBook是用PHP编写的。错误。直到他们意识到自己的错误,才写了HipHop将其转换为C ++。

编辑:显然,最后一块尚不清楚,所以我的意思是FaceBook 用PHP编写的,但是HipHop使它作为C ++ 运行,以提高整体速度,因为 PHP很慢。

2)安全性:如前所述,PHP具有悠久的安全性问题历史。

3)开发时间:用PHP制作网站通常会更容易,尤其是使用框架和所有可用的“网站构建器”时。制作一个良好,可靠和安全的PHP网站是另一回事。


至于Facebook / HipHop,它变化不大。他们仍然在编写PHP语句,不是吗?也有PHP到Java的编译器。如果我用它编译所有PHP代码,是否表示我的网站确实是用Java编写的?
Jacek Prucia 2012年

这并不意味着它就是Java,而是意味着它照此执行。
路易·科特曼

好的,您是对的,但是我仍然可以说我的网站是用PHP编写的吗?如果是,那么任何人都可以声称Facebook是用PHP编写的。换句话说,所有这些都归结为您如何理解术语“编程语言”。它仅仅是有效语句的组合还是运行时环境。我更喜欢第一个含义,这就是为什么HipHop对我来说变化不大的原因。我几乎就是您提到的FaceBook花花公子:)
Jacek Prucia 2012年

好吧,我会说得更清楚。但是从记录来看,我可以肯定大多数读者都明白我的意思。
路易·科特曼

最初用PHP编写Facebook并不是错误。当他们发现它无法跟上他们看到的可扩展性时,他们使用HipHop解决了该问题。我想这意味着对于所有网站,使用PHP都是一个很好的选择。就是说,Slashdot使用了纯Perl并解决了缩放问题,维基百科使用了纯PHP并且它也没有缩放问题。
gbjbaanb 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.