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

12月23日,由开源中国联合中国电子技术标准化研究院主办的2017源创会年终盛典在北京万豪酒店顺利举行。在本次大会上,链家集团技术副总裁、PHP 开发组核心成员鸟哥发表了以 “ PHP Next: JIT ”为主题的演讲,分享了 PHP 的下一个性能提升的主要举措:JIT 的进展, 以及下一个大版本的 PHP 可能的特性。 具体内容请看: https://mp.weixin.qq.com/s/bYZLJgKtdRwSX40Xixc5Yw ,这里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 serverdotnet 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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏草根专栏

使用 Moq 测试.NET Core - Why Moq?

在一个项目里, 我们经常需要把某一部分程序独立出来以便我们可以对这部分进行测试. 这就要求我们不要考虑项目其余部分的复杂性, 我们只想关注需要被测试的那部分. ...

1293
来自专栏SDNLAB

LINC switch系列之架构分析与源码探索

前言 LINC switch是一个由flowforwarding. org主导开发的一款纯openflow交换机,目的是发展和评估openflow协议1.2,1...

3006
来自专栏逸鹏说道

Win10 UWP应用发布流程

简介 Win10 UWP应用作为和Win8.1 UAP应用不同的一种新应用形式,其上传至Windows应用商店的流程也有了一些改变。 这篇博文记录了我们发布一款...

2405
来自专栏张善友的专栏

MSDN Magazine 4月份asp.net文章

执行 Web 标准以便更加易于访问:       本文讨论了 Web 标准如此重要的原因,并给出了一些可用于创建符合标准的网站的技术。采用这些标准可能会有一定...

1899
来自专栏九彩拼盘的叨叨叨

学习纲要:代码编辑器

813
来自专栏腾讯开源的专栏

【开源公告】业界首创iOS自动内存泄露检测工具MLeaksFinder开源

MLeaksFinder ? MLeaksFinder 是 iOS 平台的自动内存泄漏检测工具,引进 MLeaksFinder 后,就可以在日常的开发,调试业...

4165
来自专栏FreeBuf

微软Office曝存在17年之久的“全版本影响”老洞,无需用户交互实现恶意程序远程植入

当人们仍在着急处理“没有补丁”的微软MS Office内置DDE功能威胁时,有研究人员又发现了Office的另一个严重漏洞,攻击者可以利用该漏洞,无需受害者用户...

2058
来自专栏施炯的IoT开发专栏

Windows 10 IoT Serials 3 - Windows 10 IoT Core Ardunio Wiring Mode

    Maker社区和智能硬件的朋友一定知道Arduino,很多3D打印机都是用它做的。为了迎合这一大块市场,微软在基于Intel Galileo的Windo...

1838
来自专栏张高兴的博客

张高兴的 Windows 10 IoT 开发笔记:部署 ASP.NET Core 2 应用

3407
来自专栏移动安全

乐固专业版加固免费体验规则

用户需先申请专业版加固限时免费体验,在控制台进行加固后,账户自动获得100个机型的兼容性测试。

6.8K5

扫码关注云+社区