Thread Safe 和 Non Thread Safe 的选择?

首先,Thread Safe 是指程序在运行时需对线程(thread)进行安全检查,以防止有新要求就启动新线程的 CGI 执行方式耗尽系统资源。None Thread Safe 则指程序在运行时不对线程进行安全检查。

  再来看 PHP 的两种服务模式:ISAPI 和 FastCGI 。ISAPI 服务模式是以 DLL 动态库的形式被调用,可以在被用户请求后执行,在处理完一个用户请求后不会马上消失,所以需要进行线程安全检查,这样来提高程序的执行效率。而 FastCGI 执行方式则是以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查反而可以提高执行效率。

  所以,简单的概括就是当 PHP 以 ISAPI 模式运行服务时,选择 Thread Safe 版本;以 FastCGI 模式运行服务时,选择 Non Thread Safe 版本。可以通过 phpinfo() 函数页面里的 Thread Safety 项查询当前 PHP 版本是不是线程安全的。

注:ISAPI 和 FastCGI 无需在 PHP 中设置,其取决于Web Server(Apache、IIS、Nginx)以哪种模式与 PHP 合作完成服务。

原文地址:https://www.cnblogs.com/jlolox/p/10401059.html

时间: 2024-10-03 07:25:27

Thread Safe 和 Non Thread Safe 的选择?的相关文章

PHP5.3中关于VC9和VC6以及Thread Safe和Non Thread Safe版本选择的问题

转自:http://www.htmer.com/article/716.htm 最近在PHP官网上看到又有新版的PHP下载了,于是上去找找For Windows的版本,可是一看确傻眼了,一共给了四个版本,VC9 x86 Non Thread Safe.VC9 x86 Thread Safe.VC6 x86 Non Thread Safe.VC6 x86 Thread Safe,这让我这个菜鸟头疼啊,还好PHP官网提供下载的地方左边有个英文choose我看懂了,我估摸着就是如何来选择版本的意思吧,

Windows下PHP(Thread Safe与Non Thread Safe)版本说明

转载"http://www.taoz11.com/archives/300.html" linux下直接下载源码,在服务器上编译即可,发现windows下有4个版本: VC9 x86 Non Thread SafeVC9 x86 Thread SafeVC6 x86 Non Thread SafeVC6 x86 Thread Safe 网上查看了下4种版本对应使用的情况 一.如何选择 php5.3 的 VC9 版本和 VC6 版本VC6 版本是使用 Visual Studio 6 编译

【转发】Cross-thread operation not valid: Control 'progressBar1' accessed from a thread other than the thread it was created on

当您试图从单独的线程更新一个win form时,您将得到如下错误信息: "Cross-thread operation not valid: Control 'progressBar1' accessed from a thread other than the thread it was created on." 本文将介绍如何处理此错误: 问题: 重现该错误, 添加一个 progress bar 控件 (progressbar1) 以及一个  button(btnStart)到您的

oracle public redo thread and private redo thread

复习之前的学习内容,对public redo thread 和 private redo thread 的用处还是比较模糊,网上搜集的资料非常有限,看来有些好东西不跳墙是不行的. 废话少说,知识点记录下来: 在rac环境下,每个实例都有自己的redo log,这套redo log称为redo thread.这套概念同样适用于单实例数据库. redo thread有两种,private 和 public ,在默认情况下,我们使用的是public thread.但是如果我们在创建redol log时

Android 判断当前thread 是否是UI thread

在Android 中判断当前的Thread是否是UI Thread 的方法: 1. if (Looper.myLooper() == Looper.getMainLooper()) { // Current thread is the UI/Main thread } 2. if (Looper.getMainLooper().getThread() == Thread.currentThread()) { // Current thread is the UI/Main thread } 参考

PHP的 ISAPI和FastCGI运行如何选择Thread Safe与Non Thread Safe

php版本越来越多,难免有版本选择的疑惑. VC9的版本是用legacy VS 2008编译的, VC6的版本是用legacy VS6编译的. 如果你是在windows下使用IIS+PHP的话,你需要下载VC9的版本. 如果你是在windows下使用Apache+PHP的话,你需要下载VC6的版本. nts(Non Thread Safe)是指非线程安全,ts(Thread Safe)则是指线程安全. PHP有2中运行方式:ISAPI和FastCGI. ISAPI执行方式是以DLL动态库的形式使

Sub Thread to update main Thread (UI) 2

Sub Thread to update main Thread (UI)  2 Handler.post(somethread); Handler.sendMessage("Msg"); 1 import android.app.Activity; 2 import android.os.Bundle; 3 import android.os.Handler; 4 import android.os.Message; 5 import android.util.Log; 6 impo

Sub Thread to update main Thread (UI)

Sub Thread to update main Thread (UI) main Thread :   A  has Hander.HandleMessage() to process the "Msg" from subthread B; Sub Thread :    B  use  Hander.sendMessage(Msg)  to main Thread A; 1 import java.util.Timer; 2 import java.util.TimerTask;

PHP关于VC11,VC9,VC6以及Thread Safe和Non Thread Safe版本选择的问题

现在PHP官网上下载PHP安装包都有VC11或VC9的字样,这是什么含义,我们应该下载哪种安装包更好呢? 其实PHP官网给出了答案: VC6版本是使用Visual Studio 6编译器编译的,如果你的PHP是用Apache来架设的,那你就选择VC6版本.(现在PHP已经没有VC6了). VC9意思就是该版本PHP是用VisualStudio2008编译的,而VC11则是用VisualStudio2012编译的. 如果你下载的是VC9版本的,就需要先安VisualC++Redistributab