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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/322516.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java虚拟机(JVM)面试题(2020最新版)

转载自 Java虚拟机(JVM)面试题(2020最新版) Java内存区域 说一下 JVM 的主要组成部分及其作用? JVM包含两个子系统和两个组件,两个子系统为Class loader(类装载)、Execution engine(执行引擎);两个组件为Runtime da…

ASP.NET Core中的OWASP Top 10 十大风险-跨站点脚本攻击 (XSS)

本博文翻译自:https://dotnetcoretutorials.com/2017/10/25/owasp-top-10-asp-net-core-cross-site-scripting-xss/在这篇文章的前几次迭代中,我用了一个很长的篇幅解释了什么是跨站脚本(XSS)。但在花了好几个小时来完善它之后,我觉得向你展示…

(C语言)请编写程序,计算1-1/2-1/3-1/4-.....-1/50的和。

代码如下&#xff1a; #include<stdio.h>int main() {float i,sum1;for(i2;i<50;i){sumsum-1/i;}printf("%f",sum); }注意这里用的是float&#xff0c;不能用int&#xff0c;否则像是1/2&#xff0c;1/3统统都是0&#xff0c;最终运行的结果也是0&#xff…

芋道 Spring Boot 自动配置原理

转载自 芋道 Spring Boot 自动配置原理 1. 概述 友情提示&#xff1a;因为本文是分享 Spring Boot 自动配置的原理&#xff0c;所以需要胖友有使用过 Spring Boot 的经验。如果还没使用过的胖友&#xff0c;不用慌&#xff0c;先跳转到《芋道 Spring Boot SpringMVC 入门》文…

云设计模式

随着技术的快速发展&#xff0c;应用的架构逐渐从单体、分层、SOA逐渐向微服务的方向演进&#xff0c;而基础设施也逐渐从大型机&#xff0c;自建机房&#xff0c;到托管在云平台的各种服务上。所有这一切都是为了使应用&#xff08;web/mobile&#xff09;更快、更安全的上线&…

(C语言)数组去重

现有一组数&#xff0c;a[]{1,1,1,3,3,5,5,5,5,6,6,8,8,9,10,10} 要求将他们变为&#xff1a;{1&#xff0c;3&#xff0c;5&#xff0c;6&#xff0c;8&#xff0c;9&#xff0c;10} #include<stdio.h> int fun(int a[],int n){&#xff0c;int i,j1,ka[0],m,flag0;for…

Orchard Core Framework:ASP.NET Core 模块化,多租户框架

上一篇编写Orchard Core一分钟搭建ASP.NET Core CMS &#xff0c;介绍ASP.NET Core CMS &#xff0c;Orchard的ASP.NET Core版&#xff0c;同时对应有一个ASP.NET Core框架。支持模块化和多租户。整个Orchard Core就是通过一个个模块Module组成的首先创建一个空的 ASP.NET Core…

Zookeeper超详细的面试题

转载自 Zookeeper超详细的面试题 1.ZooKeeper是什么&#xff1f; ZooKeeper是一个分布式的&#xff0c;开放源码的分布式应用程序协调服务&#xff0c;是Google的Chubby一个开源的实现&#xff0c;它是集群的管理者&#xff0c;监视着集群中各个节点的状态根据节点提交的反馈…

【什么是泛型,有什么好处】

✅什么是泛型&#xff0c;有什么好处 ✅典型回答✅泛型是如何实现的✅什么是类型擦除&#xff1f;&#x1f4dd;C语言对泛型的支持&#x1f4dd;泛型擦除的缺点有哪些&#xff1f; ✅对泛型通配符的理解&#x1f4dd;泛型中上下界限定符 extends 和 super 有什么区别&#xff1…

.NET Core容器化@Docker

温馨提示&#xff1a;本文适合动手演练&#xff0c;效果更佳。1. 引言我们知道. NET Core最大的特性之一就是跨平台&#xff0c;而对于跨平台&#xff0c;似乎大家印象中就是可以在非Windows系统上部署运行。而至于如何操作&#xff0c;可能就有所欠缺。那这一节我们就结合简单…

Netty面试题(2020最新版)

转载自 Netty面试题&#xff08;2020最新版&#xff09; 1.Netty 是什么&#xff1f; Netty是 一个异步事件驱动的网络应用程序框架&#xff0c;用于快速开发可维护的高性能协议服务器和客户端。Netty是基于nio的&#xff0c;它封装了jdk的nio&#xff0c;让我们使用起来更加…

.NET开源三周年

3 年前&#xff0c;微软宣布开源 .NET 框架的大部分内容。正如Scott Hanselman在Connect 2016主题演讲中所说的那样&#xff0c;微软一直在做重大贡献&#xff1a;开源 .NET 框架并不总是一帆风顺的&#xff0c;可以肯定的说&#xff0c;总是会遇到一些困难。在过去的三年中&am…

Viewpager的使用

第一&#xff1a; 首先在activity_main中加入Viewpager控件 <androidx.viewpager.widget.ViewPagerandroid:layout_width"match_parent"android:layout_height"match_parent"android:id"id/viewPager"></androidx.viewpager.widget.Vi…

消息中间件MQ与RabbitMQ面试题(2020最新版)

转载自 消息中间件MQ与RabbitMQ面试题&#xff08;2020最新版&#xff09; 为什么使用MQ&#xff1f;MQ的优点 简答 异步处理 - 相比于传统的串行、并行方式&#xff0c;提高了系统吞吐量。 应用解耦 - 系统间通过消息通信&#xff0c;不用关心其他系统的处理。 流量削锋 …

IdentityServer4 第三方快速入门和示例

这些示例不由IdentityServer团队维护。 IdentityServer团队提供链接到了社区示例&#xff0c;但不能对示例做任何保证。 如有问题&#xff0c;请直接与作者联系。各种ASP.NET Core安全示例https://github.com/leastprivilege/AspNetCoreSecuritySamplesIdentityServer4 EF 和 A…

开发规范以及注意点

preiteer在保存时不格式化文件 Vscode回车到下一行的时候&#xff0c;不保留缩进 加上这一句即可 "editor.autoIndent": "keep",<template><div class"strategy-edit" v-loading"loading"><el-formclass"strateg…

Java并发编程面试题(2020最新版)

转载自 Java并发编程面试题&#xff08;2020最新版&#xff09; 基础知识 并发编程的优缺点 为什么要使用并发编程&#xff08;并发编程的优点&#xff09; 充分利用多核CPU的计算能力&#xff1a;通过并发编程的形式可以将多核CPU的计算能力发挥到极致&#xff0c;性能得到…

.NET Core容器化之多容器应用部署@Docker-Compose

1.引言紧接上篇.NET Core容器化Docker&#xff0c;这一节我们先来介绍如何使用Nginx来完成.NET Core应用的反向代理&#xff0c;然后再介绍多容器应用的部署问题。2. Why Need Nginx.NET Core中默认的Web Server为Kestrel。Kestrel is great for serving dynamic content from …

ServerSuperIO Designer IDE 发布,打造物联网通讯大脑,随心而联。附:C#驱动源代码。

1.概况注&#xff1a;ServerSuperIO Designer IDE 同行业网友随便使用&#xff0c;不涉及到软件使用限制的问题。从2015年到现在的将近两年的时间&#xff0c;一直在开发、完善ServerSuperIO&#xff08;SSIO&#xff09;的基础框架&#xff0c;包括&#xff1a;多通讯机制、稳…

MySQL数据库面试题(2020最新版)

转载自 MySQL数据库面试题&#xff08;2020最新版&#xff09; 数据库基础知识 为什么要使用数据库 数据保存在内存 优点&#xff1a;存取速度快 缺点&#xff1a;数据不能永久保存 数据保存在文件 优点&#xff1a;数据永久保存 缺点&#xff1a;1&#xff09;速度比内…