当时方位:协助 >> 根本教程

PHP TS 和 NTS 版别挑选

发布日期:2019/11/1 8:29:14 拜访次数:500

在PHP 开发和出产环境建立过程中,需求装置PHP言语解析器。官方供给了2种类型的版别,线程安全(TS)版和非线程安全(NTS)版,有时后咱们开发环境和实践出产的环境有所不同,因而也需求挑选装置对应的PHP版别。


1、简介
TS:
TS(Thread-Safety)即线程安全,多线程拜访时,选用了加锁机制,当一个线程拜访该类的某个数据时进行数据加锁维护,其他线程不能一起进行拜访该数据,直到该线程读取结束,其他线程才可拜访运用该数据,优点是不会呈现数据不一致或许数据污染的状况,但消耗的时刻要比 NTS 长。
PHP以 ISAPI 办法(Apache 常用办法)加载的时分挑选TS版别。
NTS:
NTS(None-Thread Safe)即非线程安全,不供给数据拜访维护,有或许呈现多个线程先后或一起操作同一数据的状况,简单形成数据紊乱(即脏数据),一般操作的履行时刻要比 TS 短。
PHP以FAST-CGI办法加载运转的时分挑选NTS版,具有更好的功能;
ISAPI:
ISAPI(Internet Server Application Programming Interface), 一般是指被http服务器所加载,以服务器的模块办法运转,由微 软提出,故只能在win平台上运转,如win下的apache,iis[用fast cgi 办法作业更安稳],而linux上php 则以 Apache模块(常用办法)或许php-fpm(该办法更适合于NGINX+PHP 运转)的办法运转。
CGI:
cgi(Common Gateway Interface):HTTP服务器与客户端机器上的程序进行“攀谈”的一种东西,简而言之,cig便是一种 后台言语,能够与服务器进行通讯。此刻的php是作为一个独立的程序运转的,特色便是消耗内存。
FAST CGI:
fast cgi是一个常驻(long-live)型的CGI,它能够一向履行着,只需激活后,不会每次都要花费时刻去fork一个新进程。这种办法 是与言语无关的、可弹性架构的CGI敞开扩展,其主要行为是将CGI解说器进程保持在内存中并因而取得较 高的功能。
FAST-CGI 是微软为了处理 CGI 解说器的缺乏而提出改善计划。当一个恳求向 web server 发送恳求时,web server总会fork一个CGI解说器进程进行处理这个恳求,进程处理完结之后将成果回来给web server,web server将成果回来并显示出来,进程结束,当用户再次恳求同一个页面时,web server又会fork一个新进程进行恳求处理,这样功率会比较低下(CGI被人诟病的主要原因)。而选用FAST-CGI 解说器的 话,当一个恳求履行结束后不会刊出该进程,而是将改善程进入休眠期,当接收到新的恳求时,从头启用改善程进行处理。FAST-CGI 较CGI 减少了进程的重复创立的资源占用。
进程与线程:一个进程至少存在一个或多个线程。


2、挑选
一般win下 PHP + Apache 组合,以 ISAPI 的办法运转。
而linux下一般分为2种:
 Apache + PHP,PHP一般作为Apache 的模块进行运转;
 Nginx + PHP ,以 phpfast cgi的办法,即php-fpm的办法运转,该办法对高并发、高负载有杰出的功能表现,因而许多网站选用该办法进行环境的建立。
Nginx 较Apache 的装备要少许多,因而人为犯错的概率要少一点,但也因而 Apache 的 安稳性要比Nginx 高。
前面废话了那么多,下面才是要点 ...


总结:
以 ISAPI 办法运转就用 TS 线程安全版
以 FAST-CGI 或 PHP-FPM 办法运转就用NTS 非线程安全版
一般 Windows 下 Apache + PHP 选TS ,IIS(fast-cgi) + PHP 选NTS
一般Linux 下 Apache + PHP 选TS,Nginx + PHP 选NTS

微信
QQ

电话
13400472755
回来顶部