<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>线程安全 &#8211; LPC影子技术分享</title>
	<atom:link href="https://www.mudbest.com/tag/%E7%BA%BF%E7%A8%8B%E5%AE%89%E5%85%A8/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.mudbest.com</link>
	<description>行影不离,忘之却步.</description>
	<lastBuildDate>Wed, 28 Mar 2012 06:22:47 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.1</generator>
	<item>
		<title>关于PHP的几个版本和线程安全的讨论</title>
		<link>https://www.mudbest.com/%e5%85%b3%e4%ba%8ephp%e7%9a%84%e5%87%a0%e4%b8%aa%e7%89%88%e6%9c%ac%e5%92%8c%e7%ba%bf%e7%a8%8b%e5%ae%89%e5%85%a8%e7%9a%84%e8%ae%a8%e8%ae%ba/</link>
		
		<dc:creator><![CDATA[hkshadow]]></dc:creator>
		<pubDate>Wed, 28 Mar 2012 06:22:47 +0000</pubDate>
				<category><![CDATA[分享]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Thread Safe]]></category>
		<category><![CDATA[线程安全]]></category>
		<guid isPermaLink="false">http://www.mudbest.com/?p=1018</guid>

					<description><![CDATA[从PHP5.2.10版本开始（现在有PHP5.2.10和5.3两个版本），有None-Thread Safe与 ... <a title="关于PHP的几个版本和线程安全的讨论" class="read-more" href="https://www.mudbest.com/%e5%85%b3%e4%ba%8ephp%e7%9a%84%e5%87%a0%e4%b8%aa%e7%89%88%e6%9c%ac%e5%92%8c%e7%ba%bf%e7%a8%8b%e5%ae%89%e5%85%a8%e7%9a%84%e8%ae%a8%e8%ae%ba/" aria-label="阅读 关于PHP的几个版本和线程安全的讨论">阅读更多</a>]]></description>
										<content:encoded><![CDATA[<p>从PHP5.2.10版本开始（现在有PHP5.2.10和5.3两个版本），有None-Thread Safe与Thread Safe两种版本的可供选择，这两种版本有何不同，作为使用者来说又应该如何选择呢？下面聚友将为您讲述。</p>
<p>先从字面意思上理解，None-Thread Safe就是非线程安全，在执行时不进行线程（thread）安全检查；Thread Safe就是线程安全，执行时会进行线程（thread）安全检查，以防止有新要求就启动新线程的 CGI 执行方式耗尽系统资源。</p>
<p>一、如何选择PHP5.3的VC9版本和VC6版本<br />
<span id="more-1018"></span><br />
VC6版本是使用Visual Studio 6编译器编译的，如果你的PHP是用Apache来架设的，那你就选择VC6版本。</p>
<p>VC9版本是使用Visual Studio 2008编译器编译的，如果你的PHP是用IIS来架设的，那你就选择VC9版本。</p>
<p>二、如何选择PHP5.3的Thread Safe和Non Thread Safe版本</p>
<p>Windows版的PHP从版本5.2.1开始有Thread Safe(线程安全)和None Thread Safe(NTS，非线程安全)之分，这两者不同在于何处？到底应该用哪种？这里做一个简单的介绍。</p>
<p>　从2000年10月20日发布的第一个Windows版的PHP3.0.17开始的都是线程安全的版本，这是由于与Linux/Unix系统是采用多进程的工作方式不同的是Windows系统是采用多线程的工作方式。如果在IIS下以CGI方式运行PHP会非常慢，这是由于CGI模式是建立在多进程的基础之上的，而非多线程。一般我们会把PHP配置成以ISAPI的方式来运行，ISAPI是多线程的方式，这样就快多了。但存在一个问题，很多常用的PHP 扩展是以Linux/Unix的多进程思想来开发的，这些扩展在ISAPI的方式运行时就会出错搞垮IIS。因此在IIS下CGI模式才是 PHP运行的最安全方式，但CGI模式对于每个HTTP请求都需要重新加载和卸载整个PHP环境，其消耗是巨大的。</p>
<p>　为了兼顾IIS下PHP的效率和安全，微软给出了FastCGI的解决方案。FastCGI可以让PHP的进程重复利用而不是每一个新的请求就重开一个进程。同时FastCGI也可以允许几个进程同时执行。这样既解决了CGI进程模式消耗太大的问题，又利用上了CGI进程模式不存在线程安全问题的优势。 </p>
<p>先从字面意思上理解，Thread Safe是线程安全，执行时会进行线程（Thread）安全检查，以防止有新要求就启动新线程的CGI执行方式而耗尽系统资源。Non Thread Safe是非线程安全，在执行时不进行线程（Thread）安全检查。</p>
<p>　因此，如果是使用ISAPI的方式来运行PHP就必须用Thread Safe(线程安全)的版本；而用FastCGI模式运行PHP的话就没有必要用线程安全检查了，用None Thread Safe(NTS，非线程安全)的版本能够更好的提高效率。</p>
<p>再来看PHP的两种执行方式：ISAPI和FastCGI。</p>
<p>ISAPI执行方式是以DLL动态库的形式使用，可以在被用户请求后执行，在处理完一个用户请求后不会马上消失，所以需要进行线程安全检查，这样来提高程序的执行效率，所以如果是以ISAPI来执行PHP，建议选择Thread Safe版本；</p>
<p>而FastCGI执行方式是以单一线程来执行操作，如果是以 FastCGI（无论搭配 IIS 6 或 IIS 7）执行 PHP ，都建议下载、执行 non-thread safe 的 PHP （PHP 的二進位檔有兩種包裝方式：msi 、zip ，請下載 zip 套件），除去线程安全检查的防护反而可以提高执行效率，所以，如果是以FastCGI来执行PHP，建议选择Non Thread Safe版本。而线程安全检查正是为ISAPI方式的PHP准备的，因为有许多php模块都不是线程安全的，所以需要使用Thread Safe的PHP。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
