手机游戏
经典单机
角色扮演
休闲益智
动作冒险
射击枪战
赛车竞速
模拟经营
解密闯关
策略战争
手机软件
时尚购物
体育运动
资讯阅读
教育学习
摄影摄像
生活服务
效率办公
聊天社交
视频盒子
其它软件
新闻资讯
游戏攻略
软件教程
游戏问答
软件资讯
软件技术
叨叨念念
网站技术
技术问答
软件教程
资源资料
原创作品
代码学习
网页设计
网络技术
合集
合集
游戏合集
软件合集
资讯合集
视频合集
首页 > 资源资料 > 资源资料

PHP线程安全和非线程安全版本的区别

作者:星知苑 时间:2013-10-28 14:19:15

最近有人问我PHP到底下哪个版本呢?

我回答说是看你的环境的,一般来说,现在windows下最新的PHP版本,一般多用非线程安全的版本(NTS)。以后windows下的使用的PHP也是非线程安全版本,这是趋势。

 

Windows版的PHP从版本5.2.1开始有Thread Safe(线程安全)和None Thread Safe(NTS,非线程安全)之分的,这两者有什么不同?到底什么样的情况下使用呢?我简单的说明下。

线程安全就是在多线程环境下也不会出现数据不一致,而非线程安全就有肯能出现数据不一致的情况。[break]

线程安全由于要确保数据的一致性,所以对资源的读写进行了控制,换句话说增加了系统开销。所以在单线程环境中效率比非线程安全的效率要低些,但是如果线程间数据相关,需要保证读写顺序,用线程安全模式。

 

由于与Linux/Unix系统是采用多进程的工作方式不同的是Windows系统是采用多线程的工作方式。如果在IIS下以CGI方式运行PHP会非常慢,这是由于CGI模式是建立在多进程的基础之上的,而非多线程。一般我们会把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,非线程安全)的版本能够更好的提高效率。

 

这个所谓的选择是针对web server而言的,在windows环境下,如果你使用的web server 是apchae 或者 iis 7以下版本,则应该选择线程安全的安装文件,而如果你使用Fast-cgi模式时,可以选择非线程安全,因为 web sever 本身能保证线程安全。

部分web server在处理应用请求的时候是用多线程而非多进程的方式处理,线程方式因为涉及到共享寄存器和内存,所以很容易出错,这个时候程序就需要花一些额外的经历去处理寄存器中的数据一致性,即保证线程安全。

所以是否采用线程安全主要看你的web server所采用的PHP请求处理方式,如果是多线程处理,那么请选择线程安全的,否则选择非线程安全的,所以Fast-cgi方式可选择非线程安全的。

 

 

1.Non Thread Safe(非线程安全)版本php适用在使用CGI以及fastCGI的web服务器上,如nginx,lighttpd以及IIS的CGI模式下

2.Thread Safe(线程安全)版本php适用在使用ISAPI或者module的web服务器上,如IIS的ISAPI模式或者apache module模式

良心推荐

大型战争策略手游
  • 卧龙吟手游下载
  • 末日远征手游官网版
  • 大秦帝国之帝国烽烟破解版下载
  • 战争怒吼手游下载
  • 巅峰坦克手游下载
  • 阿比斯之旅完整破解版
烧脑的游戏一般都是以策略游戏为主,能够在游戏中随时体验到那种战场厮杀的大型的场面,不仅有着万马奔腾的燃烧热血还有雷鼓口号震天响的那种天下有我舍我其谁的英雄之气概,乱世总是需要有王者的诞生,很多的类型题材的策略,三国类型或是海上战争以及高科技的宇宙战舰等战争是不断的升级,这里肯定是有你喜欢的策略大作游戏。

相关资讯