资讯专栏INFORMATION COLUMN

使用Zephir来快速编写高性能PHP二进制拓展

AZmake / 2448人阅读

摘要:这里我们使用来安装我们的开发环境,的安装参考官方文档使用安装编译器首先就是根据我们目标版本拉取对应的编译器镜像,这里我们版本是,于是使用这条命令然后创建文件,文件内容如下对这个文件加上可执行权限这样我们就装好了编译器创建

这里我们使用Docker来安装我们的开发环境,docker的安装参考官方文档https://docs.docker.com/install/
使用Docker安装Zephir编译器

首先就是根据我们目标PHP版本拉取对应的Zephir编译器镜像,这里我们PHP版本是7.0,于是使用这条命令:

docker pull phalconphp/zephir:7.0

然后创建/usr/local/bin/zephir文件,文件内容如下:

#!/usr/bin/env bash

docker_bin="$(which docker 2> /dev/null)"

# 5.4, 5.5, 5.6, 7, 7.0, latest
PHP_VERSION=7.0

${docker_bin} run -it --rm 
    --privileged=true 
    -e ZEND_DONT_UNLOAD_MODULES=1 
    -v $(pwd):/zephir 
    phalconphp/zephir:${PHP_VERSION} "$@"

ret=$?

if [ ${ret} -ne 0 ]; then
    errors="$(pwd)/compile-errors.log"
    if [ -e ${errors} ]; then
        cat ${errors}
    fi
fi

对这个文件加上可执行权限:

sudo chmod a+x /usr/local/bin/zephir

这样我们就装好了Zephir编译器:

$zephir version
0.9.7
创建一个PHP二进制库项目

这里我们创建的项目名叫做utils,使用Zephir脚手架初始化项目代码:

zephir init utils

编写一个zep文件:

$ cat utils/utils/greeting.zep 
namespace Utils;

class Greeting
{

    public static function say()
    {
        echo "hello world!
";
    }

}
编译这个项目
$cd utils
$ls
config.json ext utils
$zephir build

这样我们就得到了我们编译的so库文件:ext/modules/utils.so

测试以及使用这个so库文件

通过php -i | grep extension_dir得到我们PHP拓展so文件的安装目录是:/usr/lib/php/20151012/下面,于是2条命令完成cli模式PHP的拓展安装,fpm模式也类似,(通过php -i | grep "Scan this dir for additional .ini files"获取ini配置文件目录):

sudo cp ext/modules/utils.so /usr/lib/php/20151012/
echo "extension=utils.so" | sudo tee /etc/php/7.0/cli/conf.d/30-zephir-dev.ini

最后我们,写个PHP文件来测试下这个so库是否安装成功:

$cat > test.php <<_EOF

得到结果:

object(UtilsGreeting)#1 (0) {
}
hello world!
参考

https://hub.docker.com/r/phal...

https://docs.zephir-lang.com/...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/28224.html

相关文章

  • PHP 扩展开发】Zephir 简介

    摘要:什么是是一种中间语言,以接近的语法来编写代码,然后转换编译成扩展,旨在简化扩展的创建和可维护性。如果成功,会自动生成文件到目录你需要编辑填加扩展测试一下就这样,你也会扩展开发了附附编译扩展的方法 什么是 Zephir Zephir 是一种中间语言,以接近 PHP 的语法来编写代码,然后转换编译成 PHP 扩展,旨在简化 PHP 扩展的创建和可维护性。利用编译来提高性能和资源消耗,又不需...

    arashicage 评论0 收藏0
  • PHP7 安装Phalcon框架

    摘要:是什么是开源全功能栈使用扩展编写针对高性能优化的框架。也是松耦合的,可以根据项目的需要任意使用其他对象。安装支持版本的不支持普通方式的编译安装,只能通过安装。因此安装之前,请先安装。 Phalcon 是什么? Phalcon 是开源、全功能栈、使用 C 扩展编写、针对高性能优化的 PHP 5 框架。 开发者不需要学习和使用 C 语言的功能, 因为所有的功能都以 PHP 类的方式暴露出来...

    kidsamong 评论0 收藏0
  • Zephir--最简单的php扩展开发工具

    摘要:更多关于的技术文章的扩展是用语言编写,是语言引擎,内核。见提供了一种类似的高级语言语法的方式,来自动生成扩展的语言代码,使编写扩展变得非常的简单。直接修改该文件的代码,使用原扩展的编辑方法也是可以滴。 更多关于PHP的技术文章http://www.codefrom.com/ php的扩展是用c语言编写,Zend是语言引擎,PHP内核。在实际编写php扩展的时候,需要使用大量的...

    dinfer 评论0 收藏0
  • Zephir入门 —— Hello world篇

    摘要:概述是一个开源的用于简化扩展的创建和维护的语言。它使得不擅长的开发人员也能写出扩展。是缩写,读音为。然后我们在里调用方法正常的话会输出。至此我们也完成了我们的第一个扩展。 概述 Zephir是一个开源的用于简化PHP扩展的创建和维护的语言。它使得不擅长C/C++的PHP开发人员也能写出PHP扩展。Zephir是Zend Engine/PHP/Intermediate缩写,读音为zep...

    Vicky 评论0 收藏0
  • PHP扩展开发教程1 - 相关开发技术对比及介绍

    摘要:四使用语言开发是我重点推荐的扩展开发框架,简明易懂,功能强大,开发效率高,代码易维护,执行速度快。优点三支持,的扩展开发有两套扩展开发框架,分别支持,,虽然框架代码有两个,但是接口却是一样的。 PHP扩展是高级PHP程序员必须了解的技能之一,对于一个初入门的PHP扩展开发者,怎么才能开发一个成熟的扩展,进入PHP开发的高级领域呢?本系列开发教程将手把手带您从入门进入高级阶段。本教程系列...

    alaege 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<