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

Sum*_*pta 82 php multithreading

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

  1. PHP线程安全
  2. PHP非线程安全

请回答以下问题:

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

Cra*_*ack 87

从PHP文档:

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

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

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

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

PHP手册有很好的安装说明.

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

  • [This](http://windows.php.net/download/)页面告诉我们:"如果你使用PHP与IIS,你应该使用PHP的非线程安全(NTS)版本." 与答案相比:"IIS:线程安全" (10认同)
  • 是的,它提到了FastCGI.线程安全是用于使用ISAPI(php5isapi.dll)时 (9认同)
  • @SimonEast NTS版本有一些开销管理线程,已经由webserver完成,因此性能会降低 (4认同)
  • @SimonEast完全正确.它喜欢做两次工作,一次是在PHP中,一次是在webserver中 (3认同)
  • 为什么要为非线程安全选项而烦恼呢?就像:如果我可以在购买安全车和非安全车之间做出选择,为什么我会选择非安全车?它执行得更好吗? (2认同)
  • @ReZa 我明白了...这是否意味着如果您的 Web 服务器是线程安全的,那么您不需要 PHP 是线程安全的? (2认同)
  • @ReZa好评论!最后有人真正告诉您为什么需要或不需要它。 (2认同)