- navicat for mysql修改表的数据存储引擎(myisam和innodb)
- 服务端(.Net)如何操作Cookies?
- 看看黑客在做什么
- 同一个网站,经常更新的栏目更容易收录
- 网站SEO优化内部操作必会的2个层面
- C#接口的使用
- .NET的Session老不定时的过期 解决办法
- 如何分辨企业站在百度的有效外链
- 北京SEO谈网站外链锚文本如何设置分析
- app原生开发什么意思_什么是原生开发?什么是混合开发?两者有什么区别?
邮箱:
手机:15383239821
PHP 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的方式来运行,ISAPI是多线程的方式,这样就快多了。但存在一个问题,很多常用的PHP扩展是以Linux/Unix的多进程思想来开发的,这些扩展在ISAPI的方式运行时就会出错搞垮IIS。因此在IIS下CGI模式才是PHP运行的最安全方式,但CGI模式对于每个HTTP请求都需要重新加载和卸载整个PHP环境,其消耗是巨大的。
为了兼顾IIS下PHP的效率和安全,微软给出了FastCGI的解决方案。FastCGI可以让PHP的进程重复利用而不是每一个新的请求就重开一个进程。同时FastCGI也可以允许几个进程同时执行。这样既解决了CGI进程模式消耗太大的问题,又利用上了CGI进程模式不存在线程安全问题的优势。
FastCGI执行方式是以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查的防护反而可以提高执行效率,所以,如果是以 FastCGI(搭配IIS)执行 PHP ,都建议下载执行 non-thread safe 的 PHP (PHP 的二进位档有两种包装方式:msi 、zip ,请下载 zip 套件)。
而线程安全检查正是为ISAPI方式的PHP准备的,ISAPI执行方式是以DLL动态库的形式使用,可以在被用户请求后执行,在处理完一个用户请求后不会马上消失,所以需要进行线程安全检查,这样来提高程序的执行效率。因为有许多php模块都不是线程安全的,以ISAPI来执行PHP,所以需要使用Thread Safe的PHP(搭配apache)。
如果你还搞不清楚,那么只需知道你是php+apache还是php+iis组合
non-thread-safe 非 线程安全与IIS搭配环境
thread-safe 线程安全 与apache搭配环境
PHP是用C语言开发的所以依赖VC库运行
Visual C++ 2003 运行库(VC7)
Visual C++ 2005 运行库(VC8)
Visual C++ 2008 运行库(VC9)
Visual C++ 2010 运行库(VC10)
Visual C++ 2012 运行库(VC11)
Visual C++ 2013 运行库(VC12)
只有安装了相应的运行库才能运行PHP,,如php5.5要求VC11的安装
php还有VC6 VC9版本区分,VC6和VC9一个支持apache一个支持IIS,VC9用在apache上也没问题,如果你用iis就必须用vc9的,如果你用apache vc6和vc9都可以用。
以上是转载自PHP5 non-thread-safe和thread-safe的区别的内容
总结一下:
在Windows下使用IIS和PHP,Fast CGI是单一线程进行操作的,就只有一个线程,所以不需要进行线程检查,为了减少系统资源消耗,因此要选择non-threead-safe
因为有很多PHP扩展不是线程安全的,如果使用ISAPI以多线程的方式,所以需要线程检查,使用thread-safe
-
2025-07-09Nuxt 3中使用 definePageMeta 进行自定义配置
-
2012-08-14五大点让你轻松提升百度权重
-
2013-10-31手机wap网站首页宽度和长度统计分析
-
2012-08-14网站建设及优化要从四个方面斟酌
-
2012-12-02ASP.net2.0中App_GlobalResources的用途
-
2011-02-19HTTP 错误 403.9 - 禁止访问:连接的用户过多
