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模式是建立在多进程的基础之上的,而非多线程。一般我们会把 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,非线程安全)的版本能够更好的提高效率。

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

可参看phpinfo()的thread safety 属性

php 查看nts,nts | php教程|php源码|php学习相关推荐

  1. php教程源码分享,php教程|php源码|php学习

    echo "今天:".date("Y-m-d")." "; echo "昨天:".date("Y-m-d&qu ...

  2. php date.php 源码,date | php教程|php源码|php学习

    JavaScript date 格式通常支持下面四种类型: 1.ISO Dates YYYY-MM-DD 这样的格式 var d = new Date("2016-03-25"); ...

  3. 织梦php源码,织梦 | php教程|php源码|php学习

    模板文件中使用这个分页标签 {dede:pagelist listsize=3/} 如果要在url中加入参数 像是这样 /reg_user.php?ModelId=0&Registration ...

  4. Python concurrent.future 使用教程及源码初剖

    前言 原文发在这里的 Python concurrent.future 使用教程及源码初剖 垃圾话 很久没写博客了,想了想不能再划水,于是给自己定了一个目标,写点 concurrent.future ...

  5. Odoo16 教程含源码

    Odoo16 教程含源码 Odoo16 开发教程 版本变化 模块开发步骤 源码 Odoo16 开发教程 Odoo 号称全球第一的开源ERP平台,除了提供一站式的企业应用开发解决方案,作为一个网站设计器 ...

  6. SwiftUI iOS 精品项目之每天收集的故事卡片(教程含源码)

    实战需求 SwiftUI iOS 精品项目之每天收集的故事卡片(教程含源码) 每天收集的故事的卡片 本文价值与收获 看完本文后,您将能够作出下面的界面 核心功能 1.每天总共3个问题!选择一个您喜欢的 ...

  7. 企业开源测试项目实战(附全套实战项目教程+视频+源码)

    接口测试项目 1. No matching distribution found for itypes==1.1.0 Could not find a version that satisfies t ...

  8. java中batch基础_详解Spring batch 入门学习教程(附源码)

    详解Spring batch 入门学习教程(附源码) 发布时间:2020-09-08 00:28:40 来源:脚本之家 阅读:99 作者:achuo Spring batch 是一个开源的批处理框架. ...

  9. crm开源系统 tp框架_thinkphp6学习教程与源码 tp6开源CMS系统源码研究

    thinkphp6最新正式版框架上市已经有一段时间了,从官方的介绍来看,tp6的框架和tp5有很大的区别,完全重新改写了底层架构代码和逻辑,所以不支持thinkphp5的无缝升级,也就是说如果你之前的 ...

最新文章

  1. 使用 JMeter 进行压力测试
  2. Android Gradle 构建工具(Android Gradle Build Tools)是什么?
  3. Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析
  4. 【Object类、日期、StringBuilder】
  5. android翻盘效果,行情艰难,Android初中级面试题助你逆风翻盘,每题都有详细答案...
  6. 黑马程序员--java基础加强之内省(IntroSpector)
  7. 【转】Odoo开发之:工作流 workflow
  8. 第一百零六节,JavaScript变量作用域及内存
  9. 三级网络技术IP地址
  10. 计算机操作系统---高响应比调度算法,操作系统最高响应比优先调度算法实验报告...
  11. 微信小程序使用wxParse解析html代码
  12. 易班应用开发教程php,易班 开发 java开发入门教程
  13. Android的在线热更新方案_Robust
  14. 讯飞、有道、谷歌、微软语音sdk集成总结
  15. RAKsmart韩国服务器与日本服务器的差异
  16. mysql误删数据恢复操作
  17. 28个UI免费漂亮的切换开关PSD下载
  18. 【20210910】【机器/深度学习】lightGBM模型训练中报错:“Cannot set reference after freed raw data“
  19. python-清华大学镜像源
  20. 师范生计算机软件技能怎么写,计算机与信息科学学院 软件学院第十三届 师范生课堂教学技能竞赛...

热门文章

  1. Retrofit2深度解析
  2. java的public_java中public用法
  3. 基于HAL库的32工程代码区域意思,及常用函数示例
  4. 编译安装redis6.2.6
  5. Java基础二维数组
  6. 浙江大学 计算机学院 交互设计,浙江大学交互设计考研经历分享(原来跨考这么受欢迎)...
  7. 三星复仇计划开始:苹果一出LTE设备就要起诉它!
  8. 学会拒绝摔倒“哭泣”,拒绝接受“溺爱”
  9. linux使用ros打开奥比中光astra相机,查看红外图像
  10. C++编码规范与指导zt