适用于Windows的PHP线程安全和非线程安全

时间:2011-08-26 12:40:20

标签: php multithreading

我正在为Windows下载PHP。我在网站上有2个选项。

  1. PHP线程安全
  2. PHP非线程安全
  3. 请回答以下问题:

    1. 两者有什么区别?什么是 相互之间的优点和缺点?
    2. 我正在开发一个电子商务网站,这个网站流量很大,哪一个更推荐,为什么?

3 个答案:

答案 0 :(得分:80)

来自PHP文档:

  

线程安全意味着二进制文件可以在多线程Web服务器上下文中工作,例如Windows上的Apache 2。线程安全通过在每个线程中创建本地存储副本来工作,这样数据就不会与另一个线程冲突。

     

那么我该选择什么?如果您选择将PHP作为CGI二进制文件运行,那么您将不需要线程安全性,因为在每个请求时都会调用二进制文件。对于多线程Web服务器,例如IIS5和IIS6,您应该使用PHP的线程版本。

所以它真的取决于你想要使用PHP的方式:

  • Apache + LoadModule:线程安全
  • Apache + FastCGI:非线程安全
  • IIS:线程安全
  • IIS + FastCGI:非线程安全

PHP手册很不错installation instructions

使用FastCGI运行PHP的AFAIR是更好的方式,它执行速度更快,并允许更精细的安全配置。

答案 1 :(得分:0)

除了Crack之外,自5.4以来你可以使用内置的web服务器(效果很好!)。

答案 2 :(得分:0)

快速而简单:如果您使用Apache编辑Apache24 \ conf \ httpd.conf文件并搜索" loadmodule"。如果你看到你的loadmodule引用了一个类似的.dll:

LoadModule php7_module" e:/x64Stack/PHP/php7.1.9/php7apache2_4.dll"
AddHandler应用程序/ x-httpd-php .php
PHPIniDir" e:/x64Stack/PHP/php7.1.9"

然后您需要启用线程安全 TS - 线程安全版

否则,如果您使用IIS或Apache与CGI,那么NTS风味。

我在多个服务器和PHP版本中使用多个堆栈,所以不要让路径/ php或服务器版本抛弃你。