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 相关文章推荐
第十四节--命名空间
Nov 16 PHP
mysql+php分页类(已测)
Mar 31 PHP
Snoopy类使用小例子
Apr 15 PHP
PHP正确配置mysql(apache环境)
Aug 28 PHP
浅谈apache和nginx的rewrite的区别
Feb 22 PHP
php使用百度天气接口示例
Apr 22 PHP
codeigniter数据库操作函数汇总
Jun 12 PHP
ThinkPHP模板引擎之导入资源文件方法详解
Jun 18 PHP
php脚本运行时的超时机制详解
Feb 17 PHP
swoole_process实现进程池的方法示例
Oct 29 PHP
strpos() 函数判断字符串中是否包含某字符串的方法
Jan 16 PHP
laravel orm 关联条件查询代码
Oct 21 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 define函数的使用说明
2008/08/27 PHP
php使用百度天气接口示例
2014/04/22 PHP
PHP实现绘制3D扇形统计图及图片缩放实例
2014/10/01 PHP
Linux下安装oracle客户端并配置php5.3
2014/10/12 PHP
PHP入门教程之面向对象基本概念实例分析
2016/09/11 PHP
Yii2中多表关联查询hasOne hasMany的方法
2017/02/15 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
js获取单选按钮的数据
2006/11/27 Javascript
JavaScript中的Document文档对象
2008/01/16 Javascript
JS 按钮点击触发(兼容IE、火狐)
2013/08/07 Javascript
javascript实现简单的贪吃蛇游戏
2015/03/31 Javascript
AngularJS 指令详细介绍
2016/07/27 Javascript
手把手教你把nodejs部署到linux上跑出hello world
2017/06/19 NodeJs
JavaScript门面模式详解
2017/10/19 Javascript
vue+element-ui+ajax实现一个表格的实例
2018/03/09 Javascript
详解ECMAScript typeof用法
2018/07/25 Javascript
浅谈Vuex的this.$store.commit和在Vue项目中引用公共方法
2020/07/24 Javascript
JavaScript动态生成表格的示例
2020/11/02 Javascript
[01:32]DOTA2上海特锦赛现场采访:最想COS的英雄
2016/03/25 DOTA
python 控制语句
2011/11/03 Python
Python中使用logging模块打印log日志详解
2015/04/05 Python
Python logging管理不同级别log打印和存储实例
2018/01/19 Python
详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
2018/10/09 Python
对Python中class和instance以及self的用法详解
2019/06/26 Python
python向图片里添加文字
2019/11/26 Python
Python Tkinter实例——模拟掷骰子
2020/10/24 Python
python中判断数字是否为质数的实例讲解
2020/12/06 Python
CSS3弹性盒模型flex box快速入门心得(必看篇)
2016/05/24 HTML / CSS
意大利领先的线上奢侈品销售电商:Eleonora Bonucci
2017/10/17 全球购物
会计助理的岗位职责
2013/11/29 职场文书
竞选演讲稿范文大全
2014/05/12 职场文书
2014第二批党的群众路线教育实践活动对照检查材料思想汇报
2014/09/18 职场文书
建筑工地文明标语
2014/10/09 职场文书
本溪水洞导游词
2015/02/11 职场文书
瞿秋白纪念馆观后感
2015/06/10 职场文书
古诗之爱国古诗5首
2019/09/20 职场文书