为什么在Web服务器上如此频繁地使用PHP?[关闭]


14

根据W3Techs,我的Web服务器使用PHP的比例高达76.9%的Web服务器:

http://w3techs.com/technologies/overview/programming_language/all

我使用PHP的原因是惯于看到其他人在Web服务器上使用它。PHP到底是什么使它在Web服务器上无处不在?

(请注意,此问题与以下问题类似,但朝着不同的方向:为什么Java不用于现代Web应用程序开发?


4
我一直认为,因为它很容易在Apache上安装,并且几乎所有Web服务器都是Apache。
maple_shaft

14
PHP是证明几乎每个人都可以编程的语言,但几乎所有人都不可以。这是网络一代的Visual Basic。
Paul Tomblin

2
我想提出另一点-PHP具有良好的网站抽象性-缓存友好,具有不变的请求/响应周期,不会使您处理资源管理,不会使您处理数据结构,动态特性可以很好地与数据库配合使用,并且它具有大量的内置函数,因此软件包更加稀有并且易于部署。我不喜欢PHP,但是这样做很容易-我不相信,但是很容易做到。
本杰明·格林鲍姆

Answers:


41

PHP是一种专门为Web编程设计的语言,它与最流行的开源数据库MySQL进行了内置集成。

  • 容易入门:作为初学者,很容易使用PHP入门。用户只需要在现有的HTML文件中添加一些带有for循环的PHP标记,然后将其上传到服务器即可查看结果或错误消息。动态类型和关联数组使使用PHP更加容易。

  • 易于使用:与Java之类的大多数解决方案相比,PHP无需编译,因此只需编写脚本然后将其上传到服务器,然后更新浏览器即可。

  • 集成的数据库支持:(大多数)PHP具有对大多数流行数据库(例如MySQL)的内置支持,这意味着它很容易开始使用数据库,无需安装其他驱动程序即可使用mysql函数。基于Web的易于使用的管理工具PHPMyAdmin(于1998年发布)对于PHP与MySQL的成功结合也很重要。

  • 具有大量用户基础的旧语言(自1995年以来): PHP早在1995年就很流行,因为它是为Web编程而设计的。从那时起,用户群不断扩大,现在有许多面向Web的框架和库可供使用。一些示例是Blogg系统和e-shopping平台。

  • 廉价的托管:由于PHP已经存在很长时间了,并且在Linux和Windows上都可以正常运行,因此许多Web服务器都支持它。找到预装PHP的主机没有问题。


1
将此标记为答案,则无需进一步:P。好答案@Jonas
Pankaj Upadhyay

对于经典ASP,这里的大多数观点也是如此。哦,还有纯JSP。
Adriano Carneiro

4
@Adrian:1)PHP在JSP和ASP之前发布。2)由于不需要处理ODBC或JDBC和驱动程序,因此将MySQL与PHP一起使用更容易。3)当时,ASP在Linux(廉价主机)上并不容易,并且不普及。4)对于初学者来说,具有静态类型的Java较难上手。
乔纳斯(Jonas)

1
@Jonas,您主要是在强调我的观点:1)这是唯一的体面网络语言,所以在正确的时间正确的时间。3)LAMP,这就是我的帖子。另外,放轻松一点,我并不是说PHP不好,而是说它流行的原因:它填补了空白。
阿德里亚诺·卡内罗

9
我认为,“易于入门”是启动它的原因。Perl存在,并且可以完成PHP可以做的所有事情。但是对于新手来说,PHP 变得容易得多。我怀疑社区对新手也更友好。PHP填补了空白是VB做的Windows编程-很容易的,人们可以开始自己的,实际上创造的东西。
GrandmasterB

10

出于同样的原因,MySQL非常流行:它在正确的时间放置在正确的位置。

随着90年代Linux服务器的兴起,LAMP平台(Linux-Apache-MySQL-PHP)成为一种可靠且最重要的免费选择。

附带说明一下,当时使用MySQL。不久前,这是MySQL缺少的两个功能(在我看来,可能还有更多):

  • 没有触发器
  • 不完全符合ACID

甚至不符合ACID(原子性-一致性-隔离-耐久性)要求的DB怎么会如此流行呢?与PHP的答案相同:在正确的时间正确的位置。

进一步阅读有关LAMP组件上的“正确放置正确时间”的信息:


3
如果“在正确的时间在正确的位置”是答案,那么Perl和带有C的CGI应该会受到同样的欢迎。
乔纳斯(Jonas)

2
“甚至不兼容ACID的数据库如何如此受欢迎?” -很简单...对于大多数人而言,这并不重要。MySQL 对于大多数Web使用来说足够可靠。对银行来说足够早可靠吗?可能不会。对于网络论坛?是。
GrandmasterB

我有一个同事会尖叫:“但是MySQL几乎不是RDBMS!”。我觉得很有趣。受欢迎是一件有趣的事。我们-软件开发人员-一定不能成为潮流的奴隶,我们必须继续学习以继续努力。过于捍卫技术的人不太可能放手。这在职业上总是很危险的。这个话题对我来说结束了。:)
Adriano Carneiro

8

如果四处看看,这些天大多数运行PHP的人都在运行Wordpress,Drupal,Joomla等。或者是10,000个免费的流行应用程序之一,这些应用程序可以通过廉价的PHP主机和少量配置即可立即使用。很多时候安装它不是因为有人在做可以在PHP上运行的东西,而最简单的选择就是使用在PHP上构建的东西。


7

我现在正在自学PHP,所以也许我可以回答。

一个PHP源代码文件可以包含HTML,JavaScript和PHP的混合,因此启动和运行简单的Web应用程序似乎很容易。更复杂的交互(在JSP情况下需要大量Java或在CGI-BIN情况下需要一些怪异的扭曲)由PHP内置函数提供:您甚至不必知道HTTP GET或POST是否称为代码,您的代码想知道的所有内容都驻留在_REQUEST或_SERVER或_COOKIE全局变量中。

PHP语言的解析和执行速度非常快,因此生成HTML时不会注意到性能大幅下降,而不仅仅是一堆静态HTML文件。

PHP解释器几乎对每个开源DBMS和许多专有DB​​MS都有库调用,因此使3层样式的Web应用程序看起来很容易。PHP解释器包括针对许多其他常见情况(也称为“用例”)的库调用,因此您不必自己编写大量代码,只需调用该库即可。因此,就像J2EE“企业应用程序”一样,问题从知道如何编写代码到知道如何查找库中的东西。这得益于非常体面的php.net PHP手册。

作为一种编程语言,PHP没有太多奇特的结构,或者与C,FORTRAN 4或Pascal之类的代码相差无几,因此已经知道一种语言的程序员可以轻松地选择PHP编程语言。


3

PHP成功的两个关键点:时机和对共享托管的关注。

最初,Web是静态的。Web服务器只能分发预生成的HTML,这显然在一段时间后还远远不够,因此1993年NCSA团队使用称为CGI的技术扩展了其Web服务器(Apache httpd的前身),该技术允许从Web服务器调用特定程序可以即时生成HTML(或其他内容)。人们可以做所有事情,这很棒。当时用于此目的的一种常用语言是Perl。Perl是一种文本处理能力强的语言,它是处理HTTP请求数据和生成HTML的关键属性。所以人们使用它。

但是有一个问题:对于每个请求,Web服务器都必须运行一个外部程序,Perl必须初始化并运行该脚本。这引起了一些头痛。解决方案是mod_perl即将到来。1997年。mod_perl是Apache Web服务器的模块,将Perl解释器直接嵌入到Web服务器进程中,因此不需要额外的启动。

但是,这种方法还是有一个问题:mod_perl非常强大,可以访问完整的服务器配置。您不能使用一台服务器来托管多个独立的客户端,因为它们很容易伤害其他人-是有意或无意中。这就是PHP来的地方。

PHP的构建方式使其可以作为Apache模块运行(因此每个请求都不会遇到启动问题),但是在请求之间不提供任何共享环境。完成请求后,所有信息都会丢失,并且对另一个虚拟主机的后续请求将被独立处理。PHP还提供了限制访问的功能(safe_mode,open_base_dir)。通过这种架构选择,公司可以将PHP安装在其服务器上,并为客户提供FTP(或类似权限)访问以上传其文件,从而使许多客户在一台机器上无需太多工作。这引起了竞争,导致基于PHP的托管的价格低廉,从而使PHP成为无处不在的平台。

另外,PHP比Perl有一些好处,例如允许混合HTML和PHP代码或直接访问请求变量(另请参见register_globals),这在Perl中比较难(开发人员喜欢自定义分析或对CGI.pm的依赖)。

在当时使PHP成功的另一个方面是Windows的良好支持。要在Windows上运行Perl或其他语言很困难,但是在那时,许多开发人员还不需要在家中使用Windows并使用虚拟化或容器。PHP确实可以在Windows上轻松运行,因此人们可以将其用于开发,然后打包文件并在Linux上进行部署。例如,使用Perl,您必须获得正确的Perl分发,然后检查所有可用的模块等。

那其他语言呢?诸如C或C ++之类的编译语言从未受到青睐,因为脚本能够更好地服务于快速发展的市场。Java已经存在,但是Java虚拟机需要更多的资源和共享托管,而PHP支持它几乎是不可能的。在硬件上的投资要高得多。ASP(作为ASP.Net的前身)已绑定到Windows平台,将其限制为已运行Windows且不担心许可成本且再次没有共享托管支持的组织。

生产出了其他各种不同的技术,但它们都是商业性的(冷融合或带有服务器端JavaScript的Netscape Server)限制了它们的影响范围,或者直到Ruby-on-rails出现时才出现,这可能是第一个接收大量注意,但是到那时,PHP已经在大型社区中非常流行,并且成熟的软件(例如Wordpress或Drupal)使其难以竞争-尤其是因为PHP的开发从未停止并且还在继续。


1

让我们面对现实吧,PHP便宜,易于学习,拥有一个庞大的社区,您可以在任何地方托管它,而且它涉及了很多。因此,如果您认为某人使用互联网作为一种在中小型行业中快速赚钱的方式,并且必须创建一个开发区域来使用几乎不存在的基础架构来实现这一目标,那么PHP听起来就很棒(首先)。

因此,我认为PHP是用一堆程序员和一台小型计算机作为服务器来快速赚钱的好方法。

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.