Windows下的PHP安装文件线程安全和非线程安全的区别


Posted in PHP onApril 23, 2014

从2000年10月20日发布的第一个Windows版的PHP3.0.17开始的都是线程安全的版本,这是由于与Linux/Unix系统是采用 多进程的工作方式不同的是Windows系统是采用多线程的工作方式。如果在IIS下以CGI方式运行PHP会非常慢,这是由于CGI模式是建立在多进程 的基础之上的,而非多线程。一般我们会把PHP配置成以ISAPI的方式来运行,ISAPI是多线程的方式,这样就快多了。但存在一个问题,很多常用的 PHP扩展是以Linux/Unix的多进程思想来开发的,这些扩展在ISAPI的方式运行时就会出错搞垮IIS。而用线程安全版本的话顶多只是搞跨某个 线程,而不会影响到整个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,非线程安全)的版本能够更好的提高效率。

因此,如果是使用ISAPI的方式来运行PHP就必须用Thread Safe(线程安全)的版本;而用FastCGI模式运行PHP的话就没有必要用线程安全检查了,用None Thread Safe(NTS,非线程安全)的版本能够更好的提高效率。

附:德问相关问题摘录

下载PHP安装文件时,我看到有两种不同的二进制文件,像是非线程安全(Non Thread Safe)和线程安全(Thread Safe),比如该页面所列:http://windows.php.net/download/。这个是什么意思,之间有什么区别?

这个主要是针对web server 而言,在windows环境下,如果你使用的web server 是apchae 或者 iis 7以下版本,则应该选择线程安全的安装文件,而如果你使用Fast-cgi模式时,可以选择非线程安全,因为 web sever 本身能保证线程安全。
当然还有二进制文件编译时所使用的编译器:vc9 (vs系列) vc6(gcc)

如楼上所言,是针对web server的,部分web server在处理应用请求的时候是用多线程而非多进程的方式处理,线程方式因为涉及到共享寄存器和内存,所以很容易出错,这个时候程序就需要花一些额外的经历去处理寄存器中的数据一致性,即保证线程安全。
所以是否采用线程安全主要看你的web server所采用的PHP请求处理方式,如果是多线程处理,那么请选择线程安全的,否则选择非线程安全的,如楼上所说Fast-cgi方式可选择非线程安全的

PHP 相关文章推荐
由php if 想到的些问题
Mar 22 PHP
介绍一些PHP判断变量的函数
Apr 24 PHP
PHP中mb_convert_encoding与iconv函数的深入解析
Jun 21 PHP
php连接oracle数据库及查询数据的方法
Dec 29 PHP
PHP实现批量生成App各种尺寸Logo
Mar 19 PHP
PHP中substr_count()函数获取子字符串出现次数的方法
Jan 07 PHP
laravel5.2实现区分前后台用户登录的方法
Jan 11 PHP
php实现用户登陆简单实例
Apr 04 PHP
关于php 高并发解决的一点思路
Apr 16 PHP
使用Zookeeper分布式部署PHP应用程序
Mar 15 PHP
PHP开发的文字水印,缩略图,图片水印实现类与用法示例
Apr 12 PHP
一次项目中Thinkphp绕过禁用函数的实战记录
Nov 17 PHP
php自定义session示例分享
Apr 22 #PHP
php cli换行示例
Apr 22 #PHP
php使用百度天气接口示例
Apr 22 #PHP
phpmailer中文乱码问题的解决方法
Apr 22 #PHP
PHP函数addslashes和mysql_real_escape_string的区别
Apr 22 #PHP
自己写了一个php检测文件编码的函数
Apr 21 #PHP
CodeIgniter框架提示Disallowed Key Characters的解决办法
Apr 21 #PHP
You might like
用windows下编译过的eAccelerator for PHP 5.1.6实现php加速的使用方法
2007/09/30 PHP
PHP生成唯一的促销/优惠/折扣码(附源码)
2012/12/28 PHP
yii2.0整合阿里云oss上传单个文件的示例
2017/09/19 PHP
php获得刚插入数据的id 的几种方法总结
2018/05/31 PHP
PHP函数积累总结
2019/03/19 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
jquery中的查找parents与closest方法之间的区别
2013/12/02 Javascript
webpack将js打包后的map文件详解
2018/02/22 Javascript
浅析Visual Studio Code断点调试Vue
2018/02/27 Javascript
对Vue beforeRouteEnter 的next执行时机详解
2018/08/25 Javascript
js中offset,client , scroll 三大元素知识点总结
2019/09/11 Javascript
Vue项目中使用jsonp抓取跨域数据的方法
2019/11/10 Javascript
使用node.JS中的url模块解析URL信息
2020/02/06 Javascript
Python根据区号生成手机号码的方法
2015/07/08 Python
python中的闭包函数
2018/02/09 Python
使用Python爬取最好大学网大学排名
2018/02/24 Python
详解windows python3.7安装numpy问题的解决方法
2018/08/13 Python
详解python列表生成式和列表生成式器区别
2019/03/27 Python
基于腾讯云服务器部署微信小程序后台服务(Python+Django)
2019/05/08 Python
Python使用selenium + headless chrome获取网页内容的方法示例
2019/10/16 Python
会走动的图形html5时钟示例
2014/04/27 HTML / CSS
伊芙丽官方旗舰店:中国淑女一线品牌
2017/12/01 全球购物
迪奥美国官网:Dior美国
2019/12/07 全球购物
应届实习生的自我评价范文
2014/01/05 职场文书
精彩自我鉴定
2014/01/16 职场文书
美发店5.1活动方案
2014/01/24 职场文书
2014年公司植树节活动方案
2014/03/04 职场文书
读书活动总结
2014/04/28 职场文书
2014和解协议书范文
2014/09/15 职场文书
教师群众路线教育实践活动个人对照检查材料
2014/11/04 职场文书
2014年教育教学工作总结
2014/11/13 职场文书
防卫过当辩护词
2015/05/21 职场文书
妈妈再爱我一次观后感
2015/06/08 职场文书
社区安全温馨提示语
2015/07/14 职场文书
canvas多重阴影发光效果实现
2021/04/20 Javascript
Apache POI的基本使用详解
2021/11/07 Servers