最近对代码进行性能分析后,发现两个耗时的地方:自动加载文件数太多;参数验证函数调用超过1000次。这也是许多php语言框架面临的问题,所以发展出来诸如Yaf,Swoole,Phalcon这些C语言扩展框架,或者类似workerman,reactphp,phpdaemon这些一次加载的框架。总之减少加载文件,使用内置函数,减少损耗,以提升性能。
相比之下,PHP扩展的框架性能还是要比PHP语言框架还要好不少。以往PHP扩展的开发方式就是C/C++,SWIG,现在还多了一个选择:zephir,从Phalcon发展出来的项目,采用类似PHP语法的中间语言,将代码编译为高性能的C扩展。zephir支持面向对象编程,变量类型除了类似PHP的动态类型,还支持静态类型(有点像FackBook的hack了),而且可以调用php内置或其他C扩展的函数。zephir编译流程如下
整个过程是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
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
cd ~/utils
sudo vim greeting.php
greeting.php代码如下:
<?php
echo Utils\Greeting::say(), "\n";
保存并运行:
至此你的zephir编译的扩展已经成功了,赶紧翻译你的PHP代码去吧。
参考这篇教程,计算斐波拉契数列在我的环境下是这样的:
性能提升还是挺明显的,而且在静态类型(强类型)下面还能比动态类型再提升。
参考链接:
开源的 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扩展的中间层语言** Zephir是一种开源、静态类型的编程语言,设计初衷是为了简化PHP扩展的开发...对于那些希望提升PHP应用性能或对PHP扩展开发感兴趣的开发者,Zephir无疑是一个值得探索的工具。
2. **PHP扩展开发**:PHP扩展通常由C语言编写,需要对C语言有深厚的掌握。Zephir的出现降低了这个门槛,使得熟悉PHP的开发者也能参与到扩展的开发中来。通过Zephir,开发者可以直接在PHP环境中使用熟悉的语法创建和...
Leevel 高性能 PHP 扩展开发框是一个开源 PHP C 扩展开发框架,采用 zephir 编写,是为了解决使用框架带来性能下降的经典矛盾,Leevel 是为了解决 QueryPHP 性能而开发,可以与同版本的 QueryPHP 混合使用,将接管 ...
Leevel 高性能 PHP 扩展开发框架Leevel 是一个开源 PHP C 扩展开发框架,采用 zephir 编写,是为了解决使用框架带来性能下降的经典矛盾,Leevel 是为了解决 QueryPHP 性能而开发,可以与同版本的 QueryPHP 混合使用...
**正文** Zephir,作为一款面向PHP开发者的高级语言,旨在简化C扩展的创建过程,让PHP程序员可以更...在实践中,结合实际项目需求,开发者可以逐步掌握Zephir,打造出高效且可靠的PHP扩展,以应对日益复杂的业务挑战。
在PHP扩展开发的世界里,Zephir是一个非常有用的工具,它允许开发者使用类似PHP的语法来编写C扩展,从而提升性能并降低与底层交互的复杂性。本教程将深入探讨如何利用Zephir创建一个PHP扩展,该扩展能调用MySQL...
Zephir解析器 Zephir解析器作为PHP语言的C扩展提供。... 如果您希望检查较旧的版本或带有标签...视窗在Windows上安装Zephir Parser: 下载 解压缩DLL文件并将其复制到您PHP扩展目录编辑您的php.ini文件并添加以下行: [Ze
- **Zephir**:Zephir是一种静态类型的PHP扩展开发语言,可以将源代码编译为C扩展,提供一定程度的保护。 - **IonCube**、**Zend Guard**:这两个是知名的PHP源码加密工具,提供官方文档和良好的支持。 总的来说...
LeeVel PHP框架是一个开源 PHP C 扩展开发框架,采用 zephir 编写,Leevel 是为了解决 QueryPHP 性能而开发,可以与同版本的 QueryPHP 混合使用,将接管 composer 中的 PHP 版本功能。后续会提供 dll 扩展.
用于 Zephir 扩展开发的虚拟机流浪者包含: 已安装 Zephir 语言(可通过“zephir”命令访问) 已安装 Apache2 网络服务器PHP版本。 5.4.35 已安装 Composer(可通过“composer”命令访问) Phalcon2 扩展添加到 PHP ...
该框架的独特之处在于它的代码是用Zephir语言编写的,这是一种静态类型的、面向对象的中间语言,可以直接编译为PHP扩展。通过这种方式,Zephir框架能够实现与C语言类似的性能,同时保持PHP的易用性和可读性。 ...
Zephir 是一个开源的、面向对象的 PHP 扩展开发语言,它允许开发者用更接近 C 的语法来编写 PHP 扩展,从而提高代码执行效率。在 CentOS 6.5 上安装 Zephir 需要一些预备步骤和依赖项的安装。以下是一步步的详细教程...
PhalconPHP 是一个使用 C 扩展开发的 ...Phalcon 2.0 基于高性能编译语言Zephir,Zephir的目的是提供一个全新的更简单的语法来编写PHP扩展。 Phalcon 1.x还没完全迁移到Phalcon 2.0,比如目前数据库只支持MySQL。
Leevel 高性能 PHP 扩展开发框架 Leevel 是一个开源 PHP C 扩展开发框架,采用 zephir 编写,是为了解决使用框架带来性能下降的经典矛盾,Leevel 是为了解决 QueryPHP 性能而开发,可以与同版本的 QueryPHP 混合使用...
Leevel 高性能 PHP 扩展开发框架 Leevel 是一个开源 PHP C 扩展开发框架,采用 zephir 编写,是为了解决使用框架带来性能下降的经典矛盾,Leevel 是为了解决 QueryPHP 性能而开发,可以与同版本
其中,Zephir是一个用于创建C扩展的PHP语言,编译后的代码可以提高执行效率并增加安全性;IonCube和OpCache则提供了代码加密和优化的功能,它们通常通过编译后门加载器来运行加密过的PHP代码;Phar是一种打包工具,...
自从 PHP 的第一个扩展以 C 框架的形式出现以来,他们已经设法制造了很多噪音。 先说说这个方向的领先框架——Phalcon。 让我们来谈谈他的过去、现在和未来; 让我们顺利地继续讨论 Zephir 编程语言。 让我们谈谈...
Owl是由语言提供支持的极其快速PHP框架,并作为C扩展提供。 这是一个开发分支,我们需要专注于文档,测试,修复和清理代码,因此我们需要您的帮助;) Linux: 视窗: 系统要求 要构建它,您需要满足以下要求: ...
- **Zephir**:探索Zephir这一领域,它是用于开发PHP扩展的一种高级语言。 #### 四、PHP内核解析 1. **内核结构** - **基本组件**:概述PHP内核的主要组成部分及其职责。 - **执行引擎**:深入研究PHP的执行引擎...