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 相关文章推荐
php5 pdo新改动加载注意事项
Sep 11 PHP
PHP strtr() 函数使用说明
Nov 21 PHP
PHP得到mssql的存储过程的输出参数功能实现
Nov 23 PHP
PHPMailer发送HTML内容、带附件的邮件实例
Jul 01 PHP
destoon实现VIP排名一直在前面排序的方法
Aug 21 PHP
php中print(),print_r(),echo()的区别详解
Dec 01 PHP
PHP递归遍历指定目录的文件并统计文件数量的方法
Mar 24 PHP
PHP提高编程效率的20个要点
Sep 23 PHP
php实现word转html的方法
Jan 22 PHP
thinkPHP多语言切换设置方法详解
Nov 11 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
Feb 27 PHP
php 原生分页
Apr 01 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
PHP 处理图片的类实现代码
2009/10/23 PHP
求PHP数组最大值,最小值的代码
2011/10/31 PHP
php语言的7种基本的排序方法
2020/12/28 PHP
thinkphp5修改view到根目录实例方法
2019/07/02 PHP
使用jquery给input和textarea设定ie中的focus
2008/05/29 Javascript
JS运行耗时操作的延时显示方法
2010/11/19 Javascript
jquery实现图片灯箱明暗的遮罩效果
2013/11/15 Javascript
同域jQuery(跨)iframe操作DOM(实例讲解)
2013/12/19 Javascript
一个js过滤空格的小函数
2014/10/10 Javascript
jQuery实现拖拽页面元素并将其保存到cookie的方法
2016/06/12 Javascript
js事件冒泡、事件捕获和阻止默认事件详解
2016/08/04 Javascript
JS判断是否在微信浏览器打开的简单实例(推荐)
2016/08/24 Javascript
JS声明式函数与赋值式函数实例分析
2016/12/13 Javascript
jQuery编写网页版2048小游戏
2017/01/06 Javascript
Angular中$broadcast和$emit的使用方法详解
2017/05/22 Javascript
纯JS实现的读取excel文件内容功能示例【支持所有浏览器】
2018/06/23 Javascript
js中数组对象去重的两种方法
2019/01/18 Javascript
vue 移动端注入骨架屏的配置方法
2019/06/25 Javascript
Vue项目vscode 安装eslint插件的方法(代码自动修复)
2020/04/15 Javascript
实例讲解React 组件生命周期
2020/07/08 Javascript
vue中实现点击空白区域关闭弹窗的两种方法
2020/12/30 Vue.js
Python中的一些陷阱与技巧小结
2015/07/10 Python
Python中使用遍历在列表中添加字典遇到的坑
2019/02/27 Python
python实现最大子序和(分治+动态规划)
2019/07/05 Python
python元组的概念知识点
2019/11/19 Python
Python 如何在字符串中插入变量
2020/08/01 Python
python 实现超级玛丽游戏
2020/11/25 Python
sklearn中的交叉验证的实现(Cross-Validation)
2021/02/22 Python
日本化妆品植村秀俄罗斯官方网站:Shu Uemura俄罗斯
2020/02/01 全球购物
生活部的活动方案
2014/08/19 职场文书
干部职工纪律作风整改措施思想汇报
2014/10/11 职场文书
群众路线个人整改措施
2014/10/24 职场文书
2015年学雷锋活动总结
2015/02/06 职场文书
余世维讲座观后感
2015/06/11 职场文书
导游词之苏州盘门景区
2019/11/12 职场文书
vue项目支付功能代码详解
2022/02/18 Vue.js