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

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

WBOY
WBOYOriginal
2016-06-06 20:31:561256browse

自PHP 5.3.1版本开始,便已不在支持ISAPI模式,那为什么在windows下PHP官方仍然发布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。

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

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.

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn