12月23日,由开源中国联合中国电子技术标准化研究院主办的2017源创会年终盛典在北京万豪酒店顺利举行。在本次大会上,链家集团技术副总裁、PHP 开发组核心成员鸟哥发表了以 “ PHP Next: JIT ”为主题的演讲,分享了 PHP 的下一个性能提升的主要举措:JIT 的进展, 以及下一个大版本的 PHP 可能的特性。 这里PHP Next  目前正在开发当中,由 Zend 的 Dmitry Stogov 主导,但实际版本号尚未定义,我暂且把它叫做PHP 8.  关键功能 JIT(Just-In-Time)编译,是一种将代码转换为另一种字节码(比如运行它的机器 CPU 的本地代码)的技术。 JIT 可以使程序运行更快。JIT 可以对现有代码提供很大的性能改进,但在某些情况下,你可能会注意到速度提高只有几个百分点,在最坏的情况下,它甚至可能会变慢,因为编译不会生成更快的代码。 我看到这篇文章内容就想起了.NET平台上的开源项目Peachpie。

Peachpie 是一个用于 .NET 平台上的的 PHP 编译器和运行时。作为 PHP 语言的完全重新实现,它允许完全使用 .NET 进行编写,并在 .NET Framework、NET Core 和 Mono 上运行 PHP。Peachpie 可以无缝利用 .NET 对象,另一方面,也可以让 C# 代码直接访问已编译的 PHP 函数、变量和类。Peachpie 项目的目标是将 PHP 代码库迁移至 .NET,从而可通过各自的 API 为 PHP 提供 .NET 和 ASP.NET 运行时。最新版本是0.8,支持.NET Standard 2.0: https://www.peachpie.io/2017/11/php-netstandard-2-0.html ,Peachpie 也在PHP 7.2发布时第一时间完成支持编译PHP7.2 代码到.NET https://www.peachpie.io/2017/12/php-7-2-on-net.html.

Peachpie 现在还是.NET 基金会下面的项目,具体可以看博客https://www.peachpie.io/2017/07/net-foundation-announcement.html,目前最新版本是0.8,还没有达到在生产环境运行的1.0版本,从他的路线图 https://github.com/peachpiecompiler/peachpie/wiki/Peachpie-Roadmap 上看已经很接近了。它的各项性能指标上也是非常的优秀 https://www.peachpie.io/benchmarks

Peachpie是一个基于Microsoft的Roslyn的现代PHP编译器,并从我们广受欢迎的** Phalanger **项目中获取。它允许PHP在.NET框架内运行,从而为PHP开发人员打开了.NET的大门 - 反之亦然。该项目的目标是将遗留的PHP代码编译成可移植的类库,使开发人员能够快速,轻松地为Microsoft平台构建跨平台的应用程序和库。直接的结果是,由Peachpie提供支持的PHP应用程序将运行在能够运行.NET的所有设备和操作系统上。除了授予PHP程序员进行跨平台开发之外,Peachpie允许与.NET完全兼容,这使得开发混合应用程序成为可能,其中部分代码是用C#编写的,部分用PHP编写的。这些部分将完全兼容,并且可以在.NET框架内无缝地进行通信。

通过Peachpie 已经可以在.NET 平台上运行经典的PHP程序,例如WordPress,CodeIgniter,Drupal, MediaWiki等 。 不过还有一个 bug要修复,具体参见https://github.com/peachpiecompiler/peachpie/issues。

下面我们来简要体验下使用PHP写.NET程序:

1、安装.NET Core SDK

.NET Core构建并授权您的应用程序。这是一个通用,跨平台和安全的代码环境。

2、安装Peachpie .NET模板

我们已经为您准备了通用的项目类型。他们隐藏了项目文件的所有复杂性,并附带代码示例。

dotnet new -i Peachpie.Templates :: *
一共有三个模板:控制台,web以及类库

3、创建网站

现在创建该项目,该命令将创建初始解决方案所需的所有文件。Website目录将包含您的PHP网站的根目录。

继续编辑新创建的Website/index.php文件。

dotnet new peachpie-web-lang PHP

4、运行你的项目

导航到该Server目录。这是Web应用程序的入口,作为PHP网站的引导程序工作。

这些命令还原所有的依赖关系,编译项目并启动Web服务器。

cd server
dotnet restore
dotnet run
测试你的网站

打开您最喜欢的网络浏览器并输入网址。

HTTP://localhost:5004
他们已经为Peachpie 上线了商业网站http://www.peachpiestudio.com/ ,为Peachpie的发展提供商业服务支持,你可以在Peachpie编译器平台上找到商业工具和服务,你可以通过Visual Studio/Visual studio code上进行代码的开发。

WordPress示例

Peachpie使用他们的WordPress版本作为PHP编译为.NET的一个例子。 我们来演示如何跑起来。

  1. 从  https://github.com/iolevel/peachpie-wordpress 下载项目

  2. 将文件解压到某个文件夹

  3. 安装MySQL,wordpress使用mysql数据库

  4. 更改wp-config.php中的数据库连接设置

  5. 打开命令行并转切换到WordPress项目文件的文件夹

  6. 运行以下命令:
    dotnet restore
    cd app
    dotnet run

  7. 等待几分钟,直到应用程序编译并启动

  8. 在您最喜爱的网页浏览器中打开http:// localhost:5004

最后给大家放一个9月份的 dotnetConf 大会上的一个视频: Running PHP on .NET Core with Peachpie,请在Wifi下观看

class="video_iframe" data-vidtype="2" allowfullscreen="" frameborder="0" data-ratio="1.7647058823529411" data-w="480" data-src="http://v.qq.com/iframe/player.html?vid=l0523epxdbc&width=670&height=376.875&auto=0" style="display: block; width: 670px !important; height: 376.875px !important;" width="670" height="376.875" data-vh="376.875" data-vw="670" src="http://v.qq.com/iframe/player.html?vid=l0523epxdbc&width=670&height=376.875&auto=0"/>

相关文章:

  • Peachpie编译器致力于将PHP带入.Net世界

  • 体验 PHP under .NET Core

原文地址:http://www.cnblogs.com/shanyou/p/8097881.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

.NET Core 已经实现了PHP JIT,现在PHP是.NET上的一门开发语言相关推荐

  1. 【原生态跨平台:ASP.NET Core 1.0(非Mono)在 Ubuntu 14.04 服务器上一对一的配置实现-篇幅2】...

    在 [原生态跨平台:ASP.NET Core 1.0(非Mono)在 Ubuntu 14.04 服务器上一对一的配置实现-篇幅1] 环境:Ubuntu 14.04 服务器版 虚拟机:Vmware 10 ...

  2. C# 6 与 .NET Core 1.0 高级编程 - 41 ASP.NET MVC(上)

    译文,个人原创,转载请注明出处(C# 6 与 .NET Core 1.0 高级编程 - 41 ASP.NET MVC(上)),不对的地方欢迎指出与交流. 章节出自<Professional C# ...

  3. 在 .NET Core 3.0 中实现 JIT 编译的 JSON 序列化,及一些心得与随想

    源码:https://github.com/Martin1994/JsonJitSerializer NuGet:https://www.nuget.org/packages/MartinCl2.Te ...

  4. JIT 即时编译 (史上最全)

    近年来,有一个常见的.看上去傻乎乎的面试题: 聊聊:HotSpot JVM 为啥要叫做 HotSpot JVM? 这个面试题,表面上看上去傻傻的. 其实绝不是让大家解释这个名字的含义,那么简单. 可以 ...

  5. Abp框架从零开始(基于.Net Core 2.2) 小记(五) 将服务器部署在IIS上

    这一篇,我们尝试将我们的Abp项目部署到IIS上. 首先回顾下Abp框架从零开始(基于.Net Core 2.2) 小记(一) 为Swagger接口页添加详细注释这篇文章,为我们的接口添加上详细的注释 ...

  6. ASP.NET Core 3.1系列(7)——Controller接收前端上传文件的方法

    1.前言 前一篇博客主要介绍了在GET和POST模式下Controller接收参数的一系列方法,归根结底还是一些简单类型参数的传递和接收.当前端界面需要上传文件时,后台的Controller又应该如何 ...

  7. ASP.NET Core 使用IIS作为Web服务器,部署在IIS上

    1.修改项目代码Program.cs文件 替换为如下内容: public class Program     {         public static void Main(string[] ar ...

  8. ASP.NET Core在MacOS上建立HTTPS开发证书

    安装 安装 dotnet dev-certs https -trust 移除 sudo dotnet dev-certs https --clean 安装前 安装后

  9. .NET Core完成向RyuJIT的迁移

    .NET Core CLR团队宣布,他们的.NET Core平台现在已经是完全基于其下一代即时编译器RyuJIT.有人可能不知道,在.NET Core中,编译器(Roslyn)会把C#代码编译成CIL ...

最新文章

  1. ASN.1简介及OpenSSL中ASN.1接口使用举例
  2. 不太友好的下载文件提醒
  3. Weka java.lang.reflect.InvocationTargetException
  4. mysql select 使用_mysql select简单用法
  5. 个人电脑的楷模:新款IMac G5
  6. 凡人修仙传显示无法连接服务器,《凡人修仙传》网络异常及橙色BOSS补偿说明...
  7. oracle sql server的区别,oracle与sqlserver的十大区别
  8. jmap查看java进程占用的数据库连接数
  9. Unity Bound
  10. ArrayList类的基本使用,完成案例随机不重复点名的程序
  11. 乐理小课堂——自然/和声/旋律大调的调式音阶
  12. 论文阅读——INSIDER:Designing In-Storage Computing System for Emerging High-Performance Drive
  13. 笔记本加装SSD重装系统win10引导始终指向原系统的问题终极解决方法
  14. Mysql COUNT()条件计数
  15. 全球及中国数字温度传感器行业商业模式分析及投资风险预测2022年版
  16. 脉冲神经网络的五脏六腑
  17. django-oscar学习笔记(一)
  18. 2021年中国石墨烯产业链发展分析:节能环保政策的扶持下,石墨烯产业规模将持续扩大[图]
  19. 计算机考试要手速,【新生入学秘籍NO.1】亲亲,这里建议您赶紧查收学习秘籍哦!...
  20. 内网渗透笔记——注册表自启动与msi提权

热门文章

  1. Java8新特性--CompletableFuture
  2. 使用 Daynamic 动态添加属性
  3. Llinux 磁盘配额的搭建和常规问题解答
  4. np变题了。但我过了
  5. 如何预热Web API,减少初次执行时间
  6. 面向.NET开发人员的Dapr——分布式世界
  7. MIPS衰落 LoongArch崛起
  8. 删除未使用的引用 | Visual Studio 2019(16.10)新功能试用
  9. 你怕是对MD5算法有误解
  10. 通过Dapr实现一个简单的基于.net的微服务电商系统(五)——一步一步教你如何撸Dapr之状态管理...