您的位置 首页 php

PHP解惑:TS(线程安全)和NTS(非线程安全)版本选择比较

在PHP 开发和生产环境搭建过程中,需要安装PHP语言解析器。官方提供了2种类型的版本, 线程安全 (TS)版和非线程安全(NTS)版,有时后我们 开发环境 和实际生产的环境有所不同,因此也需要选择安装对应的PHP版本。

名词解释

  • TS :Thread Safe 线程 安全, 多线程 访问时,采用了加锁机制,当一个线程访问该类的某个数据时进行数据加锁保护,其他线程不能同时进行访问该数据,直到该线程读取完毕,其他线程才可访问使用该数据,好处是不会出现数据不一致或者数据污染的情况,但耗费的时间要比 NTS 长。
  • NTS :Non Thread Safe 非线程安全, 不提供数据访问保护,有可能出现多个线程先后或同时操作同一数据的情况,容易造成数据错乱(即脏数据),一般操作的执行时间要比 TS 短。

PHP主要运行方式

PHP的两种主要运行方式:ISAPI和FastCGI。

ISAPI

ISAPI(Internet Server Application Programming Interface),通常是指被http服务器所加载,以服务器的模块形式运行。如win下的 apache 、iis,而linux上php则以 Apache模块(常用方式)方式运行。

Fast CGI

FastCGI是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一个新进程。这种方式是与语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。

传统的CGI方案中,当一个请求向 web server 发送请求时,web server总会fork一个CGI解释器进程进行处理这个请求,进程处理完成之后将结果返回给web server,web server将结果返回并显示出来,进程结束,当用户再次请求同一个页面时,web server又会fork一个新进程进行请求处理,这样效率会比较低下(CGI被人诟病的主要原因。而采用FAST-CGI 解释器的话,当一个请求执行完毕后不会注销该进程,而是将改进程进入休眠期,当接收到新的请求时,重新启用改进程进行处理。FAST-CGI 较CGI 减少了进程的重复创建的资源占用。

PHP以FAST-CGI方式加载运行的时候选择TNS版,具有更好的性能。

选择

通常win下 PHP + Apache 组合,以 ISAPI 的方式运行,而linux下通常分为2种:

  • Apache + PHP,PHP一般作为Apache的模块进行运行;
  • Nginx + PHP ,以FastCGI的方式,即 php-fpm 的方式运行,该方式对高并发、高负载有良好的性能体现,因此很多网站采用该方式进行环境的搭建。

总结:

  • 以 ISAPI 方式运行就用 TS 线程安全版;
  • 以 FAST-CGI 或 PHP-FPM 方式运行就用NTS 非线程安全版;
  • 通常Linux 下 Apache + PHP 选TS,Nginx + PHP 选TNS;

文章来源:智云一二三科技

文章标题:PHP解惑:TS(线程安全)和NTS(非线程安全)版本选择比较

文章地址:https://www.zhihuclub.com/150046.shtml

关于作者: 智云科技

热门文章

网站地图