美文网首页
php线程安全和非线程安全的区别

php线程安全和非线程安全的区别

作者: mcknight | 来源:发表于2020-08-07 10:29 被阅读0次

windows下的php有两个版本,线程安全(Thread Safe)和非线程安全(Non Thread Safe)。由于Linux/Unix系统采用的是多进程的工作方式,所以linux服务器下的PHP,没有PHP线程安全和非线程安全版的区分。
TS是指具有多线程能力的构建。NTS是指单线程构建。
TS二进制文件的用例涉及与作为模块加载到Web服务器的多线程SAPI和PHP进行交互。
对于NTS二进制文件,广泛的用例是通过FastCGI协议与Web服务器进行交互,不使用多线程(也可以是CLI)。

目前php的几种运行方式:

  • CGI(Common Gateway Interface,通用网关接口)一般是可执行程序,例如EXE文件,和WEB服务器各自占据着不同的进程,而且一个CGI程序只能处理一个用户请求。这样,当用 户请求数量非常多时,会大量占用系统的资源,如内存、CPU时间等,造成效能低下。
  • FastCGI 可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。传统的CGI解释器的反复加载,也是 CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,则可以提供良好的性能、伸缩性等
  • ISAPI(Internet Server Application Program Interface,网络服务端应用编程端口)
    微软提供的一套面向WEB服务的API接口,它能实现CGI提供的全部功能,并在此基础上进行了扩展,如提供了过滤器应用程序接 口。ISAPI应用大多数以DLL动态库的形式使用,可以在被用户请求后执行,,在处理完一个用户请求后不会马上消失,而是继续驻留在内存中等待处理别的用户输入。此外,ISAPI的DLL应用程序和WEB服务器处于同一个进程中,效率要显著高于CGI。
    以 ISAPI 模式运行 PHP 的,这种方式最大的缺点就是稳定性不好,当 PHP 出错的时候,Apache进程也死掉。

线程安全和非线程安全如何选择

windos服务器:
1、如果你是PHP+IIS;请选择:PHP非线程安全(None Thread Safe(NTS));
2、如果你是PHP+apache;请选择:PHP线程安全(Thread Safe(TS));
3、如果是使用ISAPI的方式来运行PHP就必须用Thread Safe(线程安全)的版本;
4、用FastCGI模式运行PHP的话就没有必要用线程安全检查了,用None Thread Safe(NTS,非线程安全)的版本能够更好的提高效率。
linux服务器:
linux服务器下的PHP,没有PHP线程安全和非线程安全版的区分;

相关文章

  • php线程安全和非线程安全的区别

    windows下的php有两个版本,线程安全(Thread Safe)和非线程安全(Non Thread Safe...

  • 如何判断PHP 是ts还是nts版的?

    线程安全和非线程安全的区别? TS指Thread Safety,即线程安全,一般在IIS以ISAPI方式加载的时候...

  • 线程安全和非线程安全的区别

    首先要明白线程的工作原理,jvm有一个main memory,而每个线程有自己的working memor...

  • PHP7的windows安装

    1.[下载window下的PHP解释器][1] 选择线程安全的64位版本[线程安全与线程不安全的区别][2]下载完...

  • Java并发

    进程和线程区别?线程安全和非线程安全区别? 进程与线程进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动...

  • MM 小册子

    hashmap和hashtable区别线程安全,非线程安全 为什么产生死锁相互占有对方需要争夺的资源 jvm类加载...

  • ConcurrentHashMap浅析

    简述 ConcurrentHashMap是针对HashMap非线程安全和HashTable低性能线程安全。它是线程...

  • 58(5.3)

    53分钟。 线程和进程区别 Java的线程安全 什么是线程安全,如何保障。哪些变量是线程安全。 Java IO 分...

  • Java 的 StringBuffer 和 StringBuil

    区别就是:线程安全,StringBuffer 是线程安全的,StringBuilder 不是线程安全的。 他俩的实...

  • 线程安全和非线程安全

    二者如何取舍非线程安全是指多线程操作同一个对象可能会出现问题。而线程安全则是多线程操作同一个对象不会有问题。线程安...

网友评论

      本文标题:php线程安全和非线程安全的区别

      本文链接:https://www.haomeiwen.com/subject/biaxdktx.html