Windows版PHP的线程安全与非线程安全版本详解及选择指南

最近做了一个php的小东西,在网上发现了这篇文章。网上也有转载,但找不到原文链接。如果您知道什么,请告诉我,我会将其附加到博客中。谢谢。

Windows版PHP的线程安全与非线程安全版本详解及选择指南

从5.2.1版本开始,Windows版本的PHP分为Thread Safe(线程安全)和None Thread Safe(NTS,非线程安全)。两者有什么区别?应该使用哪一个?这里简单介绍一下。

从2000年10月20日发布的PHP 3.0.17第一个Windows版本开始,所有版本都是线程安全的。这是因为与Linux/Unix系统采用多进程工作方式不同,Windows系统采用多进程工作方式。线程如何工作。如果在IIS下以CGI方式运行PHP,速度会很慢。这是因为CGI模式是基于多进程的,而不是多线程的。

一般情况下,我们将PHP配置为以ISAPI模式运行。 ISAPI是多线程模式,速度快很多。但有一个问题。很多常用的PHP扩展都是基于Linux/Unix的多进程思想开发的。当这些扩展在 ISAPI 模式下运行时,它们会出错并导致 IIS 崩溃。因此,CGI模式是IIS下运行PHP最安全的方式,但CGI模式需要为每个HTTP请求重新加载和卸载整个PHP环境,其消耗巨大。

为了兼顾IIS下PHP的效率和安全性,微软提供了FastCGI解决方案。 FastCGI可以使PHP进程重新启动

重用而不是为每个新请求重新启动进程。同时,FastCGI还可以允许多个进程同时执行。这解决了问题

它解决了CGI进程模式消耗过多的问题,并且利用了CGI进程模式不存在线程安全问题的特点。

因此,如果使用ISAPI来运行PHP,则必须使用Thread Safe(线程安全)版本;并使用

如果以FastCGI模式运行PHP,则无需使用线程安全检查。使用None Thread Safe(NTS,非线程安全)。

版本可以更好的提高效率。

PHP for windows 有四个正式版本:VC9 x86 Non Thread Safe、VC9 x86 Thread Safe、VC6 x86 Non Thread Safe、VC6 x86 Thread Safe;那么有什么区别呢?

1.支持的服务器不同

VC9版本是针对IIS服务器的,不支持APACHE,而VC6版本则提供了对IIS和apache的支持。

什么是VC6?

VC6是遗留的Visual Studio 6编译器,使用此编译器进行编译。

什么是VC9?

VC9是Visual Studio 2008编译器,使用微软的VS编辑器编译。

那么我们如何选择下载哪个版本的PHP呢?

如果您在windows下使用Apache+PHP,请选择VC6版本;

如果您在Windows下使用IIS+PHP,请选择VC9版本;

2、操作方法的差异

PHP有2种运行模式:ISAPI和FastCGI。

ISAPI执行方式以DLL动态库的形式使用,用户请求后即可执行。它不会在处理完用户请求后立即消失,因此需要进行线程安全检查,以提高程序的执行效率,所以如果是使用ISAPI执行PHP时,建议选择Thread Safe版本;

FastCGI执行方式使用单线程执行操作,因此不需要进行线程安全检查。去掉线程安全检查的保护可以提高执行效率。因此,如果使用FastCGI执行PHP,建议选择Non Thread Safe版本。

对于apache服务器,一般选择isapi方式,而对于nginx服务器,则选择FastCGI方式。

你可能想看:
« 上一篇
下一篇 »

相关推荐

php实时推送,php实地培训

2026年10月05日

53阅读

php乱码出现问号的原因,php乱码出现问号的原因有哪些

2026年10月05日

45阅读

php一句话木马,一句话木马ctf

2026年10月05日

48阅读

php获取数组长度,php中如何获取数组的长度

2026年10月05日

50阅读

php面试题库及答案,php程序员面试真题库

2026年10月05日

47阅读

phpcontent-type修改,php源码二次修改需要多少钱

2026年10月05日

42阅读