重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
PHP有2中运行方式:ISAPI和FastCGI。
创新互联是一家专业提供蓬安企业网站建设,专注与做网站、网站设计、H5场景定制、小程序制作等业务。10年已为蓬安众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。
ISAPI执行方式是以DLL动态库的形式使用,可以在被用户请求后执行,在处理完一个用户请求后不会马上消失,所以需要进行线程安全检查,这样来提高程序的执行效率,所以如果是以ISAPI来执行PHP,建议选择Thread Safe版本;
而FastCGI执行方式是以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查的防护反而可以提高执行效率,所以,如果是以FastCGI来执行PHP,建议选择Non Thread Safe版本。
对于apache服务器来说一般选择isapi方式,而对于nginx和IIS服务器则选择FastCGI方式。
线程安全本身在php
的运行原理上就做到了,每个请求重新分配的内存空间,所谓php
的现线程安全,指的是
php扩展,
随着扩展模块的启动,分配的内存可以提供给多个请求调用.
php线程安全通过全局的global_id
,为每个全局变量做了唯一ID的区分.
1、windows
+
IIS
+
FastCGI
:使用非线程安全版本。
解释:
以FastCGI方式安装PHP时,PHP拥有独立的进程,并且FastCGI是单一线程的,不存在多个线程之间可能引发的相互干扰(这种干扰通常都是由于全局变量和静态变量导致的)。由于省去了线程安全的检查,因此使用FastCGI方式比ISAPI方式的效率更高一些。
2、windows
+
IIS
+
ISAPI
:使用线程安全版本。
解释:
PHP以ISAPI方式安装时,PHP没有独立的进程,而是作为DLL被IIS加载运行的,即是依附于Web服务器进程的。当Web服务器运行在多线程模式下(IIS正是这种情况),PHP自然也就运行在多线程模式下。只要是在多线程模式下运行,就可能存在线程安全问题,因此应选择PHP的线程安全版本。
3、windows
+
Apache
+
PHP(模块)
:使用线程安全版本。
解释:
如果要在Apache中以模块方式安装PHP,则应该使用PHP的线程安全的版本。原因是当PHP作为Apache的模块安装时,PHP没有独立的进程,而是作为模块以DLL的形式被加载到Apache中的,是随Apache的启动而启动的,而Windows下的Apache为多线程工作模式,因此PHP自然也就运行在多线程模式下。因此,这种情况下应使用PHP的线程安全版本。
判断PHP 是线程安全还是非线程安全:
1.通过phpinfo(); 查看其中的 Thread Safety 项,这个项目就是查看是否是线程安全,如果是:enabled,一般来说应该是ts版,否则是nts版。
2.命令行:php -i|grep -i thread
结果:Thread Safety = disabled 【disabled表示非线程安全】
如果没有grep命令(windows),那就一个个找吧。