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

栏目: PHP · 发布时间: 6年前

内容简介:.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

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

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

1、安装.NET Core SDK

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

2、安装Peachpie .NET模板

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

<font size="3">dotnet new -i Peachpie.Templates :: *</font>
<a href="http://images2017.cnblogs.com/blog/510/201712/510-20171224133222943-6091383.png"><img width="441" height="350" title="image" style="display: inline; background-image: none;" alt="image" src="http://images2017.cnblogs.com/blog/510/201712/510-20171224133223318-542540230.png" border="0" /></a>
一共有三个模板:控制台,web以及类库

3、创建网站

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

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

<font size="3">dotnet new peachpie-web-lang PHP</font>
<a href="http://images2017.cnblogs.com/blog/510/201712/510-20171224133223506-435528734.png"><img width="440" height="78" title="image" style="display: inline; background-image: none;" alt="image" src="http://images2017.cnblogs.com/blog/510/201712/510-20171224133223756-1271244696.png" border="0" /></a>

4、运行你的项目

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

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

<font size="3">cd server</font>
<font size="3">dotnet restore
dotnet run
</font>

测试你的网站

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

<font size="3">HTTP://localhost:5004</font>
他们已经为Peachpie 上线了商业网站<a title="http://www.peachpiestudio.com/" href="http://www.peachpiestudio.com/">http://www.peachpiestudio.com/</a> ,为Peachpie的发展提供商业服务支持,你可以在Peachpie编译器平台上找到商业 工具 和服务,你可以通过Visual Studio/Visual studio code上进行代码的开发。
<strong><font size="4">WordPress示例</font></strong>

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Hacking

Hacking

Jon Erickson / No Starch Press / 2008-2-4 / USD 49.95

While other books merely show how to run existing exploits, Hacking: The Art of Exploitation broke ground as the first book to explain how hacking and software exploits work and how readers could deve......一起来看看 《Hacking》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

MD5 加密
MD5 加密

MD5 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换