Tenzing';?>

首页 / STB@net

【下卷】STB on .NET 教程文档

By Tenzing •  2013-12-07 20:32:26 •  1130次点击
六、编译和安装STB
这将是整个教程中最难和最麻烦的一部分,我的每一个字亲们都必须认真看。
----web.config配置
web.config是放在跟目录的IIS和Phalanger的配置文件,stb的运行需要靠他,先贴代码
<?xm<x>l version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="Phalanger" path="*.php" verb="*" type="PHP.Core.RequestHandler PhpNetCore Version=3.0.0.0 Culture=neutral PublicKeyToken=0a8e8c4c76728c71" />
</handlers>
<defaultDocument>
<files>
<add value="index.php" />
</files>
</defaultDocument>
<httpErrors errorMode="Detailed">
<clear />
</httpErrors>
</system.webServer>
<system.web>
<globalization responseEncoding="utf-8" fileEncoding="utf-8" />
<httpRuntime requestPathInvalidCharacters="" requestValidationMode="2.0" />
<pages validateRequest="false" />
</system.web>
<phpNet>
<compiler>
<set name="EnableStaticInclusions" value="true" />
</compiler>
<classLibrary>
<add assembly="PhpNetMySql Version=3.0.0.0Culture=NeutralPublicKeyToken=2771987119c16a03" section="mysql" />
<add assembly="php_xm<x>l.mng Version=3.0.0.0 Culture=neutral PublicKeyToken=4ef6ed87c53048a3" section="xm<x>l" />
<add assembly="php_image.mng Version=3.0.0.0 Culture=neutral PublicKeyToken=4ef6ed87c53048a3" section="image" />
<add assembly="php_zlib.mng Version=3.0.0.0 Culture=neutral PublicKeyToken=4ef6ed87c53048a3" section="zlib" />
</classLibrary>
<error-control>
<set name="Displa<x>yerrors" value="false" phpName="display_errors" />
</error-control>
<globalization>
<set name="PageEncoding" value="utf-8" />
</globalization>
<bcl>
<mailer>
<!-- SMTP server 的名字和你的邮箱 -->
<set name="SmtpServer" value="127.0.0.1" phpName="SMTP" />
<!-- SMTP server 端口 -->
<set name="SmtpPort" value="25" phpName="smtp_port" />
<!-- 默认的来信地址 -->
<set name="DefaultFromHeader" value="info@phpcompiler.net" phpName="sendmail_from" />
</mailer>
</bcl>
</phpNet>
</configuration>

这里控制了第四步的IIS的大部分配置,同时引入了phalangermysql,放到根目录下即可
----编译
首先,如果你完成了上面6步,并且下载了我的编译过的版本,直接放进去就可以了,直接跳到第七步,如果二次开发过或者想要自己尝试,请往下走
当你安装好Phalanger后,找到他的目录,进入Bin目录,把PHP版的STB放进去,上面的web.config也要,把phalangermysql安装后的几个DLL放编译器Bin文件夹里的Bin目录里,新建一个bat文件,内容如下
"C:Program FilesPhalanger 3.0Binphpc" /target:web /root:. /recurse:. /out:Bin /static+ /debug-

注意文件地址,编译后将那个WebPages.dll和phalangermysql的几个运行时DLL放到网站根目录下的Bin目录即可即可正常使用
------------
七、总结
先来介绍一下Phalanger为何可以大幅提高STB的速度,首先Phalanger分为三部分,分别是编译器,类库,运行时(只做管理其它几个进程的作用),编译器会把PHP编译为MSIL底层码,其运行速度接近机器码(比JAVA底层码快是不争的事实),而PHP是解释型语言,虽然本身也是很快的,但仍敌不过.NET JAVA这类动态语言,更重要的是PHP的windows版本并没有使用IOCP模型,Fastcgi的效率也是极其之低(在windows上),这就导致了PHP在windows上的速度慢(虽然微软和zend做足了优化),而这个分支的目的就是利用三个部分:MSIL和ASP.NET代替Fastcgi,phalangermysql代替mysql和pdo-mysql。这三个部分在windows上都是极其高效的
有人问编译了为什么还有PHP文件存在?其实这里的PHP文件不会被解释,IIS接到请求后就会交给Phalanger处理,Phalanger再运行其类库和CLR运行时,因为微软做足了优化,所以即使是这么复杂的处理过程,还是非常快的,下面就看一下评测
http://www.php-compiler.net/benchmarks
通过上面的评测,不难看出编译后的PHP速度更快。
其实所有的东西都是由webpages.dll完成的
以后会介绍用C#扩展STB

遇到问题就发帖求助把

version  配置文件 

0 回复 | 直到2017-11-23 21:10添加回复

回复

登录发表 or 还没有账号?去注册