加入收藏 | 设为首页 | 影视制作 | 婚庆服务

专业网站建设,个人网站建设,品牌网站建设,欢迎致电:13763377471

常见问题

新闻资讯

您现在所在的位置:首页 > 新闻资讯

PHP虚拟主机为什么选Linux不选Windows?
来源:本站原创作者:佚名时间:2013-10-08点击:463次

难道您还在Windows虚拟主机上运行PHP+Mysql吗?看看下面的内容您就知道您的网站为什么不稳定了。

什么是现今web开发最优秀的架构?PHP+mysql 还是asp+access 或asp/asp.net+microsoft sqlserver?

也是半年之前这个问题大家还可以争论,而目前,毫无疑问php+mysql已经完全的占了上风。即便不看全球,就国内市场来说,之前asp/asp.net+access/sqlserver 的结构也彻底被php+mysql压倒,且php+mysql是市场份额还在不断扩大。LAMP正在以势不可挡的趋势逐渐取代微软的asp,就去年国内asp最红火的时候来讲,IIS的服务器市场占有率也不过25%,这也主要得益于动网和动易这两个程序的普及所致。

目前的主流应用 Discuz,Shopex,Ecshop,PHPwind,wordpress,mamboo,Dedecms,joomla,drupal,phpnuke 这些超级强大,牛x 无比的系统几乎都是php开发的,看趋势来说ASP真的不行了。而微软的大杀器ASP.net 市场份额还是小的可怜。这样看,如果win2008的iis7.0 不能给我们带来实质的惊喜,未来必将是LAMP(LInux+apache+mysql+php)独步天下。

就在PHP潮水般涌来的时候,国外主机商已经早已把虚拟主机平台的中心移到Linux,国内为何还迟迟停留在Windows上运行php呢?究其原因是之前asp+access的应用比较普及;网站工作室更容易接触到windows;空间服务商对windows系统比较熟悉而不愿把php的运行环境设置到陌生的Linux,导致正真的Linux平台上完美运行PHP网站的虚拟主机一直没有诞生。

PHP是Linux的原生服务,运行到Windows上究竟有什么不好呢?

尽管PHP是一个多平台语言,在Windows上运行PHP还是一个挑战。这是因为PHP是基于UNIX平台开发的,每个请求由一个不同的进程来处理。然而在Windows平台下面,同一类型的请求是由同一进程的不同线程来处理的。这个区别意味运行着PHP的IIS的频繁崩溃。进一步来说,对这一问题的唯一的解决方案就是把PHP运行在外部方式下(CGI)。最终导致PHP性能的降低。关键问题还是以下几点:

多线程:
PHP原生为多处理器环境(APACHE),因此最常用于LAMP (Linux, Apache, MySQL, PHP) 平台。windows的工作方式不同,web服务器,不管是iis还是apache都是多线程运行,即一个处理器上跑所有客户请求。为了使php在多线服务器上跑的好,必须考虑线程安全的问题。如果线程安全处理失败,会导致php运行不稳定是当然的,同时是iis或apache崩溃的情况也经常发生。还有更糟糕,一个崩溃的线程会导致整个web服务器挂掉,这也是为什么iis进程池会频繁的崩溃。相对于多进程环境,就算一个进程崩溃又有什么关系,第web服务器没有影响,下一个请求来的时候自动唤醒一个新的进程就可以了,就跟没发生过一样。时至今日,唯一防止php在windows上崩溃的做法还是把php设置为外部CGI,但会比ISAPI慢很多。

CGI:
CGI表示 "通用网关接口"。CGI是一个联接平台,用于web服务器和web应用程序之前的对话连接,PHP就是CGI。CGI按照web服务器的应用标准被创建,接口的好处是简单,更重要是和开发语言无关,而且相互直接是隔离的。这种隔离方式有效的阻止了崩溃程序错误引起的web服务器崩溃。要知道2003 sp2之前的asp程序错误会异常频繁引起整个web服务器崩溃,可想而知当时的主机商是生活在地狱中一样。CGI并都是好处,显著地缺点是-严重的拖慢服务器性能。CGI 机制本身就包含了巨大的系统开销,为一个新的请求生成PHP进程的初始化工作最终导致了极端的性能地下,一个新进程的生成需要的内存分配和代码载入对于每次http请求都要重复一次,而且请求结束后还会清理掉,对操作系统来说是严重的拖累。

本地web服务器模块:
为了解决CGI的性能问题,web服务器提供商会提供为web服务器提供API。知名的API包括netscape的NSAPI和MS的ISAPI. 这些API支持PHP跑在几个服务进程里面,每个处理进程处理一组请求,而不是一个,这样做能节约进程初始化的过多开销。API运行在单个处理器上,但不是多线程的服务器。当部分PHP被修改成线程安全的,那线程安全版本绝不会比多进程版更稳定和高效。一个php中的一个小错,不管来自于一个模块调用,或第三方库,都可能导致线程挂掉,并传播到整个服务器线程导致web 服务器停止。这点从IIS的进程池监控可以看出来,在LInux上并不需要这个监管程序。为此,在windows上使用本地服务模块或插件,不管是apache还是iis,都被证明是不具备大规模的应用价值,常常会不可预期的出现崩溃,即使使用ISAPI模式。

红动网络工作室 版权所有
7×24小时服务电话:13763377471 E-mail:pointad@qq.com
QQ在线:767510045(客服)红动网络客服QQ:767510045  285666906(技术)红动网络技术QQ:285666906  MSN:pointad2008@hotmail.com
Copyright © 2005-2012 www.redow.cn All Rights Reserved.
粤ICP备11060607号