PHP语言TS和NTS版本有什么区别

发布时间:2019-04-13 11:43:32 来源:未知 作者:admin
  当我们使用PHP语言进行网站开发时,需要下载PHP解析器。PHP官方为我们提供了两个版本,即TS和NTS版本,即TS(线程安全)版本和NTS(非线程安全版本)。两个版本拥有不同的工作模式以及使用场合,我们应该加以区别对待,根据实际的需要选择合适版本的PHP。以下是青锋建站给大家分享的PHP的TS和NTS版本的区别以及工作模式,如何选择PHP版本。

TS和NTS版本PHP的工作模式

TS版本php
  TS(Thread-Safety)即线程安全,多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时进行数据加锁保护,其他线程不能同时进行访问该数据,直到该线程读取完毕,其他线程才可访问使用该数据,好处是不会出现数据不一致或者数据污染php的情况,但耗费的时间要比 NTS 长。PHP以 ISAPI 方式(Apache 常用方式)加载的时候选择TS版本。
NTS版本php
  NTS(None-Thread Safe)即非线程安全,不提供数据访问保护,有可能出现多个线程先后或同时操作同一数据的情况,容易造成数据错乱(即脏数据),一般操作的执行时间要比 TS 短。PHP以FAST-CGI方式加载运行的时候选择TNS版,具有更好的性能;

PHP不同版本的工作模式

ISAPI模式:
  ISAPI(Internet Server Application Programming Interface), 通常是指被http服务器所加载,以服务器的模块形式运行,由微 软提出,故只能在win平台上运行,如win下的apache,iis[用fast cgi 方式工作更稳定],而linux上php 则以 Apache模块(常用方式)或者php-fpm(该方式更适合于NGINX+PHP 运行)的方式运行,一般这种方式我们选择PHP的TS版本。
CGI模式:
  cgi(Common Gateway Interface):HTTP服务器与客户端机器上的程序进行“交谈”的一种工具,简而言之,cig就是一种 后台语言,可以与服务器进行通讯。此时的php是作为一个独立的程序运行的,特点就是耗费内存。
FAST CGI模式:
  fast cgi是一个常驻(long-live)型的CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去fork一个新进程。这种方式 是与语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较 高的性能,在windows系统下使用FAST CGI时我们一般选择PHP的NTS版本。
  FAST-CGI 是微软为了解决 CGI 解释器的不足而提出改进方案。当一个请求向 web server 发送请求时,web server总会fork一个CGI解释器进程进行处理这个请求,进程处理完成之后将结果返回给web server,web server将结果返回并显示出来,进程结束,当用户再次请求同一个页面时,web server又会fork一个新进程进行请求处理,这样效率会比较低下(CGI被人诟病的主要原因)。而采用FAST-CGI 解释器的 话,当一个请求执行完毕后不会注销该进程,而是将改进程进入休眠期,当接收到新的请求时,重新启用改进程进行处理。FAST-CGI 较CGI 减少了进程的重复创建的资源占用。
PHP-FPM模式
  大家都知道,PHP的解释器是php-cgi,php-cgi只是个CGI程序,他自己本身只能解析请求,返回结果,不会进程管理。而PHP-FPM就是一个实现了Fastcgi协议的程序,能够调度php-cgi进程的程序。PHP-FPM在长时间的发展后,逐渐得到了大家的认可,也越来越流行。PHP-FPM提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置,在./configure的时候带 –enable-fpm参数即可开启PHP-FPM,在linux系统使用PHP-FPM模式时选择PHP的NTS版本。

PHP语言TS和NTS版本的选择

  在windows系统下 采用PHP + Apache 组合,以 ISAPI 的方式运行,选择TS版本;而在windows系统下采用IIS(fast-cgi) + PHP 选TNS。
  在linux系统下采用Apache + PHP 组合就选TS,采用Nginx + PHP组合就 选PHP的TNS版本。
  采用php-fpm的方式运行,,也就是在linux系统下采用Nginx + PHP组合,该方式对高并发、高负载有良好的性能体现,因此很多网站采用该方式进行环境的搭建。Nginx 较Apache 的配置要少很多,因此人为出错的概率要少一点,但也因此 Apache 的 稳定性要比Nginx 高。

修改nginx配置支持php-fpm

nginx安装完成后,修改nginx配置文件为,nginx.conf
其中server段增加如下配置,注意标红内容配置,否则会出现No input file specified.错误
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ .php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
启动php-fpm和nginx
/usr/local/php/sbin/php-fpm
#手动打补丁的启动方式/usr/local/php/sbin/php-fpm start
sudo /usr/local/nginx/nginx
  以上就是青锋建站给大家分享的PHP TS和NTS版本的区别与PHP版本的选择,PHP的几种工作模式,如何修改nginx配置让其支持php-fpm。青锋建站,提供专业的高品质网站制作服务,包括网站开发,SEO,网络营销,CMS建站开发,PHP原生开发,使用YII框架开发。
  网站建设http://www.sjzphp.com
分享到:

Copyright © 2016-2026 青锋建站 版权所有