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

这里我们使用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!\n";

}

}

编译这个项目

$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>

$obj = new Utils\Greeting();

var_dump($obj);

Utils\Greeting::say();

_EOF

$php test.php

得到结果:

object(Utils\Greeting)#1 (0) {

}

hello world!

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值