`
llitllie
  • 浏览: 7586 次
文章分类
社区版块
存档分类
最新评论

PHP 扩展开发之Zephir

阅读更多

最近对代码进行性能分析后,发现两个耗时的地方:自动加载文件数太多;参数验证函数调用超过1000次。这也是许多php语言框架面临的问题,所以发展出来诸如YafSwoolePhalcon这些C语言扩展框架,或者类似workermanreactphpphpdaemon这些一次加载的框架。总之减少加载文件,使用内置函数,减少损耗,以提升性能。
相比之下,PHP扩展的框架性能还是要比PHP语言框架还要好不少。以往PHP扩展的开发方式就是C/C++SWIG,现在还多了一个选择:zephir,从Phalcon发展出来的项目,采用类似PHP语法的中间语言,将代码编译为高性能的C扩展。zephir支持面向对象编程,变量类型除了类似PHP的动态类型,还支持静态类型(有点像FackBook的hack了),而且可以调用php内置或其他C扩展的函数。zephir编译流程如下
scheme
整个过程是zephir和底层编译器自动进行编译优化的,当然也可以自己调整以获得更好的性能。
在ubuntu下的安装如官方教程即可,在centos下的安装如下

su -c 'yum update'
sudo yum install -y wget 
sudo yum install -y vim 
sudo yum install -y libtool
sudo yum install -y gcc
sudo yum install -y make
sudo yum install -y re2c
 
sudo rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm
sudo yum install -y php55w 
sudo yum install -y php55w-devel 
sudo yum install -y php55w-json
 
sudo yum install -y git-core 
 
git clone https://github.com/json-c/json-c.git
cd /json-c
./autogen.sh
./configure
make
make install
 
git clone https://github.com/phalcon/zephir
cd zephir
./install -c
zephir help
 

安装完成如下:
zephir10
按照教程创建示例:

zephir init utils
cd utils
sudo vim utils/greeting.zep
 

greeting.zep代码如下:

namespace Utils;
 
class Greeting
{
 
    public static function say()
    {
        echo "hello world!";
    }
 
}
 

编译安装

 zephir build
 

注意,我在php5.3下面这么编译都不行,在php5.5/php5.4的版本基本没有碰到什么问题。
然后更改php.ini:

sudo vim /etc/php.ini
 

在php.ini中加上以下内容

;zephir编译的扩展需要依赖json.so,需要提前加载
[json]
;如果php.ini中没有则加上,有则去掉;
extension=json.so
 
[utils]
extension=utils.so 
 

查看php可用扩展

php -i
 

注意:如果提示’undefined symbol: php_json_decode_ex in Unknown on line 0’,则是php json扩展未加载,在php.ini打开就行了。加载了json.so后又提示’PHP Warning: Module ‘json’ already loaded’,则是已经在其他地方加载了该扩展,找出并注释掉。我的是在php.d下面的json.ini里面:

sudo vim /etc/php.d/json.ini
 
json]
;已经在php.ini中加载了,为避免重复加载注释掉
;extension = json
 

加载成功后的效果:
zephir3
创建一个php脚本来试一下

cd ~/utils
sudo vim greeting.php
 

greeting.php代码如下:

<?php
 
echo Utils\Greeting::say(), "\n";
 

保存并运行:
zephir11

至此你的zephir编译的扩展已经成功了,赶紧翻译你的PHP代码去吧。
参考这篇教程,计算斐波拉契数列在我的环境下是这样的:
zephir13
性能提升还是挺明显的,而且在静态类型(强类型)下面还能比动态类型再提升。

参考链接:
开源的 PHP 轻量级框架 iphp
自己写PHP扩展之创建一个类
快速开发一个PHP扩展
CentOS 5 or CentOS 6 Upgrade PHP to PHP 5.4 or PHP 5.5
PHP 開發者應該將 Zephir 列為重要觀察的專案
Hack: a new programming language for HHVM
Getting Started with PHP Extension Development via Zephir
Quick Tip: Install Zephir and Phalcon 2 on Vagrant

 个人博客链接:PHP 扩展开发之Zephir

分享到:
评论

相关推荐

    Zephir用于开发PHP扩展且介于PHP和C之间的编译语言

    **Zephir:构建高效PHP扩展的中间层语言** Zephir是一种开源、静态类型的编程语言,设计初衷是为了简化PHP扩展的开发...对于那些希望提升PHP应用性能或对PHP扩展开发感兴趣的开发者,Zephir无疑是一个值得探索的工具。

    zehphir代码 zephir编写PHP扩展

    2. **PHP扩展开发**:PHP扩展通常由C语言编写,需要对C语言有深厚的掌握。Zephir的出现降低了这个门槛,使得熟悉PHP的开发者也能参与到扩展的开发中来。通过Zephir,开发者可以直接在PHP环境中使用熟悉的语法创建和...

    Leevel 高性能PHP扩展开发框 v1.0.0-alpha-1.zip

    Leevel 高性能 PHP 扩展开发框是一个开源 PHP C 扩展开发框架,采用 zephir 编写,是为了解决使用框架带来性能下降的经典矛盾,Leevel 是为了解决 QueryPHP 性能而开发,可以与同版本的 QueryPHP 混合使用,将接管 ...

    Leevel高性能PHP扩展开发框架 v1.0.0 alpha.2

    Leevel 高性能 PHP 扩展开发框架Leevel 是一个开源 PHP C 扩展开发框架,采用 zephir 编写,是为了解决使用框架带来性能下降的经典矛盾,Leevel 是为了解决 QueryPHP 性能而开发,可以与同版本的 QueryPHP 混合使用...

    Zephir中文手册,纯手工翻译文档版

    **正文** Zephir,作为一款面向PHP开发者的高级语言,旨在简化C扩展的创建过程,让PHP程序员可以更...在实践中,结合实际项目需求,开发者可以逐步掌握Zephir,打造出高效且可靠的PHP扩展,以应对日益复杂的业务挑战。

    zephir调用mysql的类

    在PHP扩展开发的世界里,Zephir是一个非常有用的工具,它允许开发者使用类似PHP的语法来编写C扩展,从而提升性能并降低与底层交互的复杂性。本教程将深入探讨如何利用Zephir创建一个PHP扩展,该扩展能调用MySQL...

    php-zephir-parser:Zephir Parser作为PHP语言的C扩展交付

    Zephir解析器 Zephir解析器作为PHP语言的C扩展提供。... 如果您希望检查较旧的版本或带有标签...视窗在Windows上安装Zephir Parser: 下载 解压缩DLL文件并将其复制到您PHP扩展目录编辑您的php.ini文件并添加以下行: [Ze

    php加密的两个扩展

    - **Zephir**:Zephir是一种静态类型的PHP扩展开发语言,可以将源代码编译为C扩展,提供一定程度的保护。 - **IonCube**、**Zend Guard**:这两个是知名的PHP源码加密工具,提供官方文档和良好的支持。 总的来说...

    LeeVel PHP扩展开发框架 v1.0.rar

    LeeVel PHP框架是一个开源 PHP C 扩展开发框架,采用 zephir 编写,Leevel 是为了解决 QueryPHP 性能而开发,可以与同版本的 QueryPHP 混合使用,将接管 composer 中的 PHP 版本功能。后续会提供 dll 扩展.

    Phalcon-Zephir-Vagrant:准备使用虚拟机通过 zephir 构建扩展

    用于 Zephir 扩展开发的虚拟机流浪者包含: 已安装 Zephir 语言(可通过“zephir”命令访问) 已安装 Apache2 网络服务器PHP版本。 5.4.35 已安装 Composer(可通过“composer”命令访问) Phalcon2 扩展添加到 PHP ...

    zephir-framework:zephir 框架

    该框架的独特之处在于它的代码是用Zephir语言编写的,这是一种静态类型的、面向对象的中间语言,可以直接编译为PHP扩展。通过这种方式,Zephir框架能够实现与C语言类似的性能,同时保持PHP的易用性和可读性。 ...

    ZephirInstallationCentos:Zephir安装Centos 6.5

    Zephir 是一个开源的、面向对象的 PHP 扩展开发语言,它允许开发者用更接近 C 的语法来编写 PHP 扩展,从而提高代码执行效率。在 CentOS 6.5 上安装 Zephir 需要一些预备步骤和依赖项的安装。以下是一步步的详细教程...

    Phalcon php框架 v2.0.2.zip

    PhalconPHP 是一个使用 C 扩展开发的 ...Phalcon 2.0 基于高性能编译语言Zephir,Zephir的目的是提供一个全新的更简单的语法来编写PHP扩展。   Phalcon 1.x还没完全迁移到Phalcon 2.0,比如目前数据库只支持MySQL。

    Leevel高性能PHP扩展开发框架源代码

    Leevel 高性能 PHP 扩展开发框架 Leevel 是一个开源 PHP C 扩展开发框架,采用 zephir 编写,是为了解决使用框架带来性能下降的经典矛盾,Leevel 是为了解决 QueryPHP 性能而开发,可以与同版本的 QueryPHP 混合使用...

    Leevel高性能PHP扩展开发框架 v1.0.0 alpha.1

    Leevel 高性能 PHP 扩展开发框架 Leevel 是一个开源 PHP C 扩展开发框架,采用 zephir 编写,是为了解决使用框架带来性能下降的经典矛盾,Leevel 是为了解决 QueryPHP 性能而开发,可以与同版本

    PHP实例开发源码—PHP 代码加密解密在线版.zip

    其中,Zephir是一个用于创建C扩展的PHP语言,编译后的代码可以提高执行效率并增加安全性;IonCube和OpCache则提供了代码加密和优化的功能,它们通常通过编译后门加载器来运行加密过的PHP代码;Phar是一种打包工具,...

    zephir-presentation:2015 年代码节

    自从 PHP 的第一个扩展以 C 框架的形式出现以来,他们已经设法制造了很多噪音。 先说说这个方向的领先框架——Phalcon。 让我们来谈谈他的过去、现在和未来; 让我们顺利地继续讨论 Zephir 编程语言。 让我们谈谈...

    owl:由Zephir支持并作为C扩展提供PHP Web框架

    Owl是由语言提供支持的极其快速PHP框架,并作为C扩展提供。 这是一个开发分支,我们需要专注于文档,测试,修复和清理代码,因此我们需要您的帮助;) Linux: 视窗: 系统要求 要构建它,您需要满足以下要求: ...

    Advanced PHP Programming(高级PHP编程)

    - **Zephir**:探索Zephir这一领域,它是用于开发PHP扩展的一种高级语言。 #### 四、PHP内核解析 1. **内核结构** - **基本组件**:概述PHP内核的主要组成部分及其职责。 - **执行引擎**:深入研究PHP的执行引擎...

Global site tag (gtag.js) - Google Analytics