首页 > 为什么PHP 5.3不在支持ISAPI,为什么还要分NTS和TS版本?

为什么PHP 5.3不在支持ISAPI,为什么还要分NTS和TS版本?

自PHP 5.3.1版本开始,便已不在支持ISAPI模式,那为什么在windows下PHP官方仍然发布NTS和TS两个版本?


ISAPI 服务器扩展是可以被 HTTP 服务器加载和调用的 DLL。Internet 服务器扩展也称为 Internet 服务器应用程序
(ISA),用于增强符合 Internet 服务器 API (ISAPI) 的服务器的功能。ISA
通过浏览器应用程序调用,并且将相似的功能提供给通用网关接口 (CGI) 应用程序。


php5 non-thread-safe和thread-safe这两个版本的区别

从PHP5.2.10版本开始(现在有PHP5.2.10和5.3两个版本),有None-Thread Safe与Thread
Safe两种版本的可供选择,这两种版本有何不同,作为使用者来说又应该如何选择呢?下面聚友将为您讲述。
先从字面意思上理解,None-Thread Safe就是非线程安全,在执行时不进行线程(thread)安全检查;Thread
Safe就是线程安全,执行时会进行线程(thread)安全检查,以防止有新要求就启动新线程的 CGI 执行方式耗尽系统资源。

再来看PHP的两种执行方式:ISAPI和FastCGI。FastCGI执行方式是以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查的防护反而可以提高执行效率,所以,如果是以
FastCGI(无论搭配 IIS 6 或 IIS 7)执行 PHP ,都建议下载、执行 non-thread safe 的 PHP (PHP
的二進位檔有兩種包裝方式:msi 、zip ,請下載 zip
套件)。而线程安全检查正是为ISAPI方式的PHP准备的,因为有许多php模块都不是线程安全的,所以需要使用Thread Safe的PHP。


按照这两段文字所讲解的来解读的话,确实是不需要TS版本的了。
但一定还是有地方需要TS版,不然干脆分为ISAPI版和FastCGI版了,而不是TS和NTS。


没有人造吗?这是要沉的节奏啊!


Linux上的PHP同样有NTS和TS版本的区别,默认是NTS版本,configure时加上--enable-maintainer-zts则编译为TS版本.什么时候需要TS版本呢?比如你要使用pthreads这个多线程的PECL扩展时,或者PHP以MOD_PHP嵌入多线程运行下的Apache,比如Apache在Linux上提供的Event MPM就是一个多进程多线程的工作模型,Windows上Apache采用的WinNT MPM也是一个多线程模型,这时都需要TS版本的PHP.

而如果以PHP-FPM(比如搭配Nginx或者Apache的mod_fastcgi)或者PHP-CGI(比如搭配Apache的mod_fcgid或者Win上的IIS)来运行PHP,则一般都不需要TS线程安全版本的PHP.


apache的mod_php是多线程模式,有些命令行的php应用也需要多线程支持。

【热门文章】
【热门文章】