资讯专栏INFORMATION COLUMN

PHP的线程安全(Thread Safe)与非线程安全(None Thread Safe)版本的区别

acrazing / 2034人阅读

摘要:从年月日发布的第一个版的开始的都是线程安全的版本,这是由于与系统是采用多进程的工作方式不同的是系统是采用多线程的工作方式。

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,非线程安全)的版本能够更好的提高效率。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/21063.html

相关文章

  • PHP安装包TS和NTS区别

    摘要:指,即线程安全,一般在以方式加载的时候选择这个版本。具体从年月日发布的第一个版的开始的都是线程安全的版本,这是由于与系统是采用多进程的工作方式不同的是系统是采用多线程的工作方式。 TS指Thread Safety,即线程安全,一般在IIS以ISAPI方式加载的时候选择这个版本。NTS即None-Thread Safe,一般以fast cgi方式运行的时候选择这个版本,具有更好的性能。 ...

    CocoaChina 评论0 收藏0
  • 并发学习笔记(1)

    摘要:共享数据使线程之间的通信比进程之间的通信更有效。并发模型和的区别说明的作用是启动一个新线程操作系统级别,有一个方法启动新线程,新线程会执行相应的方法。单独调用会在当前线程中执行并不会启动新线程创建一个线程即可但是这个线程没有执行任何代码段。 tutorials site 并发Concurrency发展的历史 单CPU,一次只能运行一个程序 -- 多任务,一次同时运行多个任...

    objc94 评论0 收藏0
  • (PHP7内核剖析-10) 线程安全

    摘要:中专门为解决线程安全的问题抽象出了一个线程安全资源管理器,实现原理比较简单既然共用资源这么困难那么就干脆不共用,各线程不再共享同一份全局变量,而是各复制一份,使用数据时各线程各取自己的副本,互不干扰。 1.线程安全资源管理器 PHP的SAPI多数是单线程环境,比如cli、fpm、cgi,每个进程只启动一个主线程,这种模式下是不存在线程安全问题的,但是也有多线程的环境,比如Apache,...

    Achilles 评论0 收藏0
  • PHP 进阶之路 - 揭开 PHP 线程安全神秘面纱

    摘要:如果现有子进程中的线程总数不能满足负载,控制进程将派生新的子进程。为解决线程的并发问题,引入了线程安全资源管理器。的全拼,用来存放各个线程的链表。 PHP 进阶之路 - 零基础构建自己的服务治理框架(上) PHP 进阶之路 - 零基础构建自己的服务治理框架(下) PHP 进阶之路 - 亿级 pv 网站架构的技术细节与套路 PHP 进阶之路 - 亿级 pv 网站架构实战之性能压榨 注...

    pepperwang 评论0 收藏0
  • 如何在windows下搭建Nginx+MySQL+PHP环境

    摘要:前往下载,选择版本。在目录下新建链接数据库成功链接数据库失败运行之后输出下面结果,说明可以解析文件且可以链接数据库。 准备所需安装包 本次所选安装版本是:nginx1.11.5,php7.1.0,mysql5.7.16,当然可以根据喜欢的版本下载,为了方便管理,我在D盘下新建了wnmp文件夹,里面包含文件夹有mysql,php,nginx,www,www为存放项目文件夹。Nginx: ...

    Sunxb 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<