• 欢迎访问极客公园网站,WordPress信息,WordPress教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入极客公园 QQ群
  • Git主题现已支持滚动公告栏功能,兼容其他浏览器,看到的就是咯,在后台最新消息那里用li标签添加即可。
  • 最新版Git主题已支持说说碎语功能,可像添加文章一样直接添加说说,新建说说页面即可,最后重新保存固定连接,演示地址
  • 百度口碑求点赞啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊http://koubei.baidu.com/s/gitcafe.net
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏极客公园吧

Windows里PHP5.x的VC6、VC9、Thread Safe、Non Thread Safe各种版本区别

未分类 博客教主 14年前 (2011-04-01) 1692次浏览 0个评论

PS:昨晚想在win7里调试个php程序,顺便试试nginx在win里的运行效率怎样。就配了一下。好长时间没在win里跑php了,去php官网一看,发现win版本的php居然有好几种。PHP官网(http://windows.php.net/download/)5.3一共给了四个版本,VC9 x86 Non Thread Safe、VC9 x86 Thread Safe、VC6 x86 Non Thread Safe、VC6 x86 Thread Safe。我囧~~

我开始就下了个PHP5.3的VC9 x86 Thread Safe版本,配合nginx用FastCGI模式运行,开始一切正常。30分钟左右,突然提示FastCGI程序遇到问题关闭。之后几次我重启FastCGI都还是如此。切换到IIS7.5里跑,又很正常。后来一想,会不会是php版本的问题,之后用VC9 x86 Non Thread Safe版本跑,马上恢复正常。为什么会出现这个问题呢?
下面简单总结一下这几个版本的区别:

FastCGI程序非法关闭的日志信息:

<System>
<Provider Name=”Application Error” />
<EventID Qualifiers=”0“>1000</EventID>
<Level>2</Level>
<Task>100</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime=”2011-04-01T00:28:00.000000000Z” />
<EventRecordID>1430</EventRecordID>
<Channel>Application</Channel>
<Computer>IBM-T43</Computer>
<Security />
</System>
<EventData>
<Data>php-cgi.exe</Data>
<Data>5.3.6.0</Data>
<Data>4d81e480</Data>
<Data>php5ts.dll</Data>
<Data>5.3.6.0</Data>
<Data>4d81e545</Data>
<Data>c0000005</Data>
<Data>000f75e0</Data>
<Data>a48</Data>
<Data>01cbf003a7ad378a</Data>
<Data>D:\Server\PHP\v5.3\php-cgi.exe</Data>
<Data>D:\Server\PHP\v5.3\php5ts.dll</Data>
<Data>e58e10fa-5bf6-11e0-8fd9-005056c00008</Data>
</EventData>
</Event>

一、如何选择PHP5.3的VC9版本和VC6版本

VC6版本是使用Visual Studio 6编译器编译的,如果你的PHP是用Apache来架设的,那你就选择VC6版本。
VC9版本是使用Visual Studio 2008编译器编译的,如果你的PHP是用IIS来架设的,那你就选择VC9版本。

二、如何选择PHP5.3的Thread Safe和Non Thread Safe版本

先从字面意思上理解,Thread Safe是线程安全,执行时会进行线程(Thread)安全检查,以防止有新要求就启动新线程的CGI执行方式而耗尽系统资源。Non Thread Safe是非线程安全,在执行时不进行线程(Thread)安全检查。

再来看PHP的两种执行方式:ISAPI和FastCGI。

ISAPI执行方式是以DLL动态库的形式使用,可以在被用户请求后执行,在处理完一个用户请求后不会马上消失,所以需要进行线程安全检查,这样来提高程序的执行效率,所以如果是以ISAPI来执行PHP,建议选择Thread Safe版本;

而FastCGI执行方式是以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查的防护反而可以提高执行效率,所以,如果是以FastCGI来执行PHP,建议选择Non Thread Safe版本。

总结:如果是以FastCGI方式(搭配IIS、apache、nginx)来执行PHP ,都建议下载、执行 non-thread safe 版本的 PHP(PHP的二进位档有两种包装方式:msi 、zip ,建议使用zip解压包)。而线程安全检查正是为ISAPI方式的PHP准备的,因为有许多php模块都不是线程安全的,所以需要使用Thread Safe的PHP。在生产环境里跑php,还是Linux为王。如果一定需要win环境,建议用Win Server 2008 R2的IIS 7.5跑。


极客公园 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Windows里PHP5.x的VC6、VC9、Thread Safe、Non Thread Safe各种版本区别
喜欢 (0)

您必须 登录 才能发表评论!