当前位置:首页 > 叨叨念念 > PHP线程安全和非线程安全版本的区别

PHP线程安全和非线程安全版本的区别

叨叨念念 / 星之宇 / 2021-11-6 21:13 / 浏览:970 / 评论:0

1、PHP介绍

1.1 Windows下的php有两个版本,线程安全(Thread Safe)和非线程安全(Non Thread Safe)。

1.2 由于Linux/Unix系统采用的是多进程的工作方式,所以linux服务器下的PHP,没有PHP线程安全和非线程安全版的区分。

所以现在说的TS和NTS版本只是对于Windows下的PHP来说的。


2、PHP说明

2.1 TS是指具有多线程能力的构建,NTS是指单线程构建。TS二进制文件的用例涉及与作为模块加载到Web服务器的多线程SAPI和PHP进行交互。对于NTS二进制文件,广泛的用例是通过FastCGI协议与Web服务器进行交互,不使用多线程(也可以是CLI)。

2.2 Windows版的PHP从版本5.2.1开始有Thread Safe(线程安全)和None Thread Safe(NTS,非线程安全)之分的。


3、PHP运行方式

3.1 CGI(Common Gateway Interface,通用网关接口)一般是可执行程序,例如EXE文件,和WEB服务器各自占据着不同的进程,而且一个CGI程序只能处理一个用户请求。这样,当用 户请求数量非常多时,会大量占用系统的资源,如内存、CPU时间等,造成效能低下。

3.2 FastCGI 可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。传统的CGI解释器的反复加载,也是 CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性等。

3.3 ISAPI(Internet Server Application Program Interface,网络服务端应用编程端口)微软提供的一套面向WEB服务的API接口,它能实现CGI提供的全部功能,并在此基础上进行了扩展,如提供了过滤器应用程序接 口。ISAPI应用大多数以DLL动态库的形式使用,可以在被用户请求后执行,,在处理完一个用户请求后不会马上消失,而是继续驻留在内存中等待处理别的用户输入。此外,ISAPI的DLL应用程序和WEB服务器处于同一个进程中,效率要显著高于CGI。但是以ISAPI模式的缺点就是稳定性不好,当PHP出错的时候,Apache进程也死掉。


4、PHP选择

4.1 Non Thread Safe(非线程安全)版本php适用在使用CGI以及fastCGI的web服务器上,如nginx,lighttpd以及IIS的CGI模式下

4.2 Thread Safe(线程安全)版本php适用在使用ISAPI或者module的web服务器上,如IIS的ISAPI模式或者apache module模式

目前有 0 条评论

    • 昵称
    • 邮箱
    • 网址