php+线程安全+数据库,php多线程

关于PHP线程安全和非线程安全的区别

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扩展,

随着扩展模块的启动,分配的内存可以提供给多个请求调用.

php线程安全通过全局的global_id

,为每个全局变量做了唯一ID的区分.

PHP线程安全和非线程安全有什么区别

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 是线程安全还是非线程安全的

判断PHP 是线程安全还是非线程安全:

1.通过phpinfo(); 查看其中的 Thread Safety 项,这个项目就是查看是否是线程安全,如果是:enabled,一般来说应该是ts版,否则是nts版。

2.命令行:php -i|grep -i thread

结果:Thread Safety = disabled 【disabled表示非线程安全】

如果没有grep命令(windows),那就一个个找吧。


网站标题:php+线程安全+数据库,php多线程
文章路径:http://cdiso.cn/article/heogdo.html

其他资讯