php线程安全与非线程安全版的区别

Thread Safe(线程安全)和 None Thread Safe(非线程安全)php

背景:
Linux/Unix系统采用多进程的工做方式,而Windows系统采用多线程的工做方式。
CGI模式是创建在多进程的基础上的,ISAPI模式是多线程的方式。(php运行的方式)
不少经常使用的php拓展是以Linux/Unix的多进程思想来开发的,在ISPAI的方式运行会出错搞垮IIS.所以IIS下CGI模式才是php运行的最安全的方式。但CGI模式对于每一个HTTP请求都须要从新加载和卸载正个php环境,其消耗是巨大的。

web

解决方案:
为了兼顾IIS下php的效率和安全,微软给出了FastCGI的解决方案。FastCGI可让php的进程重复利用而不是每个新的请求就重开一个进程,同时容许几个进程同时执行。所以ISAPI的方式运行php就必须用Thread Safe的版本,用FastCGI模式运行php就没有必要用线程安全检查,用None Thread Safe的版本就可以更好的提升效率。(winodw平台下其余web服务器相似) 

安全

原理:
ISPAI执行方式是以DLL动态库的形式使用,能够在被用户请求后执行,在处理完一个用户请求后不会立刻消失,因此须要进行线程安全检查,这样来提升程序的执行效率。
FastCGI执行方式是以单一线程来执行操做,因此不须要进行线程的安全检查 ,除去线程安全检查的防御反而能够提升执行效率。服务器

注:
通常多进程意味着更安全,多线程意味更着方便。多线程

相关文章
相关标签/搜索