PHP Thread Safe 和 Non-Thread Safe for Windows

2022-08-30 07:27:21

我正在下载适用于 Windows 的 PHP。我在网站上有2个选项。

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

请回答以下问题:

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

答案 1

来自 PHP 文档:

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

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

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

  • Apache + : Thread SafeLoadModule
  • Apache + FastCGI: Non-Thread Safe
  • IIS: 线程安全
  • IIS + FastCGI: 非线程安全

PHP手册有很好的安装说明

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


答案 2

快速而简单:如果您使用的是Apache,请编辑Apache24\conf\httpd.conf文件并搜索“loadmodule”。如果您看到 loadmodule 正在引用一个.dll如下所示:

LoadModule php7_module “e:/x64Stack/PHP/php7.1.9/php7apache2_4.dll”
AddHandler application/x-httpd-php .php
PHPIniDir “e:/x64Stack/PHP/php7.1.9”

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

否则,如果您将IIS或Apache与CGI一起使用,那么NTS风格。

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


推荐