当前位置: 移动技术网 > IT编程>开发语言>PHP > 简单介绍一下,PHP版本的区别

简单介绍一下,PHP版本的区别

2018年10月22日  | 移动技术网IT编程  | 我要评论

以为这个已经写过了,发现没有,赶紧补充下。

 

php的版本,自从进入5以后,发布新版本速度明显提升很多,从php5.2开始,5.3 、5.4 、5.5,就快要6.0了。

 

注:ecshop用户请自觉使用php5.2.17版本。呵呵。

 

在php官网下载php时,我们会发现有vc6、vc9的区别,这是什么意思呢?


vc6是legacy visual studio 6 compiler,使用这个版本的编译器编译php代码的,使用apache做应用程序服务器,则选择vc6。

vc9是the visual studio 2008 compiler,就是用微软的vs编辑器编译的。使用iis做应用程序服务器,则选择vc9。

 

那么,我们注意到,php-5.2.17-nts-win32-vc6-x86.zip php的解压文件中,有nts和没有nts的区别,这个又是什么意思呢?

 

这要从php的5.2系列版本说起。从5.2.1版本开始,就有ts和nts的区别,thread safe(线程安全)和none thread safe(nts,非线程安全)

 

windows版的php从版本5.2.1开始有thread safe(线程安全)和none thread safe(nts,非线程安全)之分,这两者不同在于何处?到底应该用哪种?这里做一个简单的介绍。


从2000年10月20日发布的第一个windows版的php3.0.17开始的都是线程安全的版本,这是因为linux/unix系统是采用多进程的工作方式,而windows系统是采用多线程的工作方式。如果在iis下以cgi方式运行php会非常慢,因为cgi模式建立在多进程的基础之上,而不是多线程。我们在windows上会把php配置成以isapi的方式来运行,因为isapi是多线程的方式,这样就快多了。

 

但存在一个问题,很多常用的php扩展是以linux/unix的多进程思想来开发的,这些扩展在isapi的方式运行时就会出错,很可能将iis进程搞崩溃,因此对于iis来说,cgi模式才是php运行的最安全的方式,只不过cgi模式对于每个http请求都需要重新加载和卸载整个php环境,其消耗是巨大的。

为了兼顾iis下php的效率和安全,微软给出了fastcgi的解决方案。fastcgi可以让php的进程重复利用而不是每一个新的请求就重开一个进程。同时fastcgi也可以允许几个进程同时执行。这样既解决了cgi进程模式消耗太大的问题,又利用上了cgi进程模式不存在线程安全问题的优势。

因此,如果是使用isapi的方式来运行php就必须用thread safe(线程安全)的版本;而用fastcgi模式运行php的话就没有必要用线程安全检查了,用none thread safe(nts,非线程安全)的版本能够更好的提高效率。

 

根据不同的webserver,也就是应用程序服务器,在处理应用请求的时候,有些是用多线程而非多进程的方式,那么由于线程会牵扯到共享寄存器和内存方面的,所以很容易出错(考虑c语言指针的情况),那么系统就需要时间和资源来处理寄存器中的数据,保证它们的一致性,也就是保证线程安全了。

 

所以是否使用thread safe(线程安全),主要看web server所采用的php请求处理方式,如果是多线程处理如iis的isapi方式,那么请选择线程安全,如果是fastcgi那么选择非线程安全。

 

最终建议:iis下,使用isapi方式运行php,就使用thread safe(线程安全)的版本,使用fastcgi方式运行php,就使用none thread safe(nts,非线程安全)的版本。

 

注:php5.2没有vc9,php5.3、php5.4没有vc6。呵呵。php5.5开始,不支持xp和win2003了,更是vc11了,呵呵呵呵。

 

一般来说,我喜欢使用解压配置版本,更能了解php的设置和文件。有c语言基础的同仁可以下载源码看看,说不定更有所心得。
---------------------
作者:weixin_43144260
来源:csdn
原文:https://blog.csdn.net/weixin_43144260/article/details/83182782
版权声明:本文为博主原创文章,转载请附上博文链接!

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网