📜  什么是PHP的线程安全或非线程安全?

📅  最后修改于: 2022-05-13 01:54:11.377000             🧑  作者: Mango

什么是PHP的线程安全或非线程安全?

线程安全:用于保证在不同线程操作的共享数据结构时,不会进入竞争状态。当 Web 服务器为不同的请求同时运行多个执行线程时,建议使用线程安全。在 Thread Safety 中,二进制文件可以在多线程 Web 服务器上下文中工作。线程安全的工作原理是在每个线程中创建一个本地存储副本,以便数据不会与另一个线程发生冲突。
例如:

  • Apache + 加载模块
  • 信息系统

非线程安全:它不检查线程的安全性,这使得它运行得更快,但同时它变得更加不稳定并且非常频繁地崩溃。它指的是单线程只构建。在通过 FastCGI 协议与 Web 服务器交互的情况下,广泛使用非线程安全版本的二进制文件,不使用多线程。
例如:

  • Apache + FastCGI
  • IIS + FastCGI

所以这取决于您想要使用PHP。 AFAIR 使用 fastCGI 运行PHP是更可取的方式。如果您不知道系统中安装了哪个版本的PHP ,那么有一种简单的方法可以知道。
检查已安装的PHP线程安全或非线程安全版本:
打开 phpinfo() 并搜索线程安全的线程安全行,您应该找到启用。

  • 在 Windows 上:
    php -i|findstr "Thread"
    
  • 在 *nix 上:
    php -i|grep Thread
    
  • 在这两种情况下都会显示任何一个
    Thread Safety => enabled
    //or
    Thread Safety => disabled