PHP版本的区别

2019独角兽企业重金招聘Python工程师标准>>> hot3.png


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


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语言基础的同仁可以下载源码看看,说不定更有所心得。







版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://my.oschina.net/u/998304/blog/526986

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399410.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1515 跳 - Wikioi

题目描述 Description邪教喜欢在各种各样空间内跳。现在,邪教来到了一个二维平面。在这个平面内,如果邪教当前跳到了(x,y),那么他下一步可以选择跳到以下4个点:(x-1,y), (x1,y), (x,y-1), (x,y1)。而每当邪教到达一个点&#xff0…

python dry原则_关于Python 的这几个技巧,你应该知道

随着大数据时代的到来,我们每天都在接触爬虫相关的事情,这其中就不得不提及Python这门编程语言。我已经使用Python编程有多年了,即使今天我仍然惊奇于这种语言所能让代码表现出的整洁和对DRY编程原则的适用。这些年来的经历让我学到了很多的小…

快速格式化的DOS命令是什么?

https://zhidao.baidu.com/question/3269005.html Dos下的format命令是用来进行格式化的。 FORMAT A:或c:, d:等等,后面可以加一些参数 比如FORMAT A: /S 这是格式化并追加系统。也就是制作一个简单的启动盘。 如果给硬盘进行格式化(重装系统前的准备工…

instanceof的用法①

1 public class typeof1{2 private String a"zzw";3 public void instance(){4 if(a instanceof String) //判断是不是String类型的5 {6 System.out.println("hello world!");7 }8 }9 public static …

ADT-bundle

eclipse 弹出 Version 1.4.2_03 of the JVM not suitable for this product.Version1.6or geeater is requir 原因jdk版本过低,需更换高版本 ADT-bundle-linux-X86 解压后有两个文件夹eclipse 和sdk 注意:adb命令在platform-tools下 解压后还需修改sdk的…

runtest的选项应用

runtest 6 --installnfs-utils-1.2.3-76.el6 --jobn2 #install指定安装包版本,jobn指定提交job数量 distro-list.sh all | grep -i fedora #查找所有fedora的分支,fedora25,27在beaker上安装不稳定,所以以后验证时使用fedora27&am…

合并两个有序链表算法(leetcode第21题)

题目描述: 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1:输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4] 示例 2:输入:l1 [], l2 [] 输…

css设置鼠标滑过背景变色;鼠标滑过背景变色

https://jingyan.baidu.com/article/9158e000381292a254122828.html div:hover{background-color: red;}

vue 微信支付的坑_vue_模式下h5微信支付

微信公众号配置网页授权域名:填写网址域名微信开发者平台配置url:访问url:http://www.bc.com/pay/pay支付授权目录:http://www.bc.com/pay/访问url:http://www.bc.com/pay支付授权目录:http://www.bc.com/访…

修改maven本地仓库位置

2019独角兽企业重金招聘Python工程师标准>>> 首先需要安装好&#xff0c;假设安装位置在&#xff1a;D:\****\maven\apache-maven-3.3.3修改本地仓库位置&#xff0c;打开配置文件&#xff1a;D:\****\maven\apache-maven-3.3.3\conf\settings.xml<!-- localRepo…

iOS sqlite

iOS sqlite数据库操作。步骤是&#xff1a; 先加入sqlite开发库libsqlite3.dylib&#xff0c; 新建或打开数据库&#xff0c; 创建数据表&#xff0c; 插入数据&#xff0c; 查询数据并打印 1、新建项目sqliteDemo,添加使用sqlite的库libsqlite3.dylib 2、sqlite 的方法 sqlite…

redis在php中的基本使用

//使用autoload加载相关库,这边重点就是为了require $file; spl_autoload_register(function($class) { $file __DIR__.’/lib/Predis/’.$class.’.php’; if (file_exists($file)) { require $file; return true; } }); //配置连接的IP、端口、以及相应的数据库 …

ad如何设置pcb板子形状_手把手教你在PCB上添加泪滴

泪滴(Teardrops)在PCB电路板设计中&#xff0c;为了让焊盘更坚固&#xff0c;防止机械制板时焊盘与导线之间断开&#xff0c;常在焊盘和导线之间用铜膜布置一个过渡区&#xff0c;形状像泪滴&#xff0c;故常称做补泪滴&#xff08;Teardrops&#xff09;。泪滴的作用避免电路板…

用模版实现简单的内存池

程序中有时候会遇到这种情况&#xff0c;就是需要不停的去分配以及释放内存。带来的是不停的调用new以及delete带来的开销。 而且由于全局的new以及delete往往对多线程做出了并发保护&#xff0c;所以在单线程情况下这更带来一种浪费&#xff0c;一般的情况下是去实现一个 单线…

WordPress插入图片无法居中的解决方法

img.img-responsive {display: block;margin-left: auto;margin-right: auto; } 参考:https://www.22vd.com/38777.html

织梦标签大全2

系统标签&#xff1a; {dede:global.cfg_basehost/} {dede:global.cfg_webname/} {dede:global.cfg_powerby/}版权信息 {dede:field.keywords/} {dede:field.description/} {dede:global.cfg_beian/} {dede:global.cfg_templets_skin/}/style/ {dede:global.cfg_templets_skin/…

python编写脚本,删除固定用户下的所有表

脚本如下&#xff1a;[oracleycr python]$ more t_del.py #/usr/bin/python#coding:utf8import sysimport cx_Oraclei0conncx_Oracle.connect(%s/%s%s % (sys.argv[1],sys.argv[2],sys.argv[3]))cursorconn.cursor()cursor.execute(select table_name from user_tables)rowscur…

在Brackets中使用jsHint遇到的问题

在Brackets安装使用jsHint&#xff0c;但发现jsHint不生效&#xff0c;仅有Brackets自带的jsLint生效。 此时可通过修改配置文件解决&#xff0c;首先确定已经安装了jsHint&#xff0c;在右边栏点击 Extension Manager图标&#xff0c;搜索jsHint&#xff0c;安装即可。 然后点…

华为云hcip认证试题_首信AAA认证计费系统通过华为云兼容性认证,成为华为认证级ISV伙伴...

点击上方“蓝字”关注我们首信AAA认证计费系统软件3.0在2020年9月24日通过华为云Stack 6.5(鲲鹏)的兼容性测试&#xff0c;最终获得华为技术认证书及HUAWEI COMPATEBLE相关认证徽标使用权。同时&#xff0c;首信科技获得华为认证级ISV伙伴认证证书。本次获得的产品兼容性认证及…