简单介绍一下,PHP版本的区别
以为这个已经写过了,发现没有,赶紧补充下。
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
版权声明:本文为博主原创文章,转载请附上博文链接!
推荐阅读
-
Ubuntu中支持PHP5与PHP7双版本的简单实现
-
简单谈谈php中ob_flush和flush的区别
-
Linux系统下多版本php共存的解决方案(超简单)
-
php.ini-dist 和 php.ini-recommended 的区别介绍(方便开发与安全的朋友)
-
php中is_null,empty,isset,unset 的区别详细介绍
-
PHP中file_exists与is_file,is_dir的区别介绍
-
莴苣的功效与作用禁忌,给你们简单的介绍一下
-
微信小程序体验版本和上线版本的区别介绍
-
PHP中基于ts与nts版本- vc6和vc9编译版本的区别详解
-
php class中self,parent,this的区别以及实例介绍