PHP 7.4 的 FFI 将支持更好地在 PHP 中使用 C 函数/数据结构
即将在下月底发布的 PHP 7.4 将会引入一个有趣的新功能,那就是期待已久的对 FFI(外部函数接口,Foreign Function Interface)的支持。此功能使得开发者可以在原生 PHP 代码中调用 C 定义的函数/变量/数据结构。
FFI 与预加载功能都将是 PHP 7.4 的重要新功能,FFI 还增强了 PHP FPM systemd 服务、用于 OpenSSL 流的 TLS 1.3 以及许多其他更改。PHP 7.4 的 FFI 甚至可与其他语言的 FFI 实现相媲美。
使用 PHP FFI 应该可以减少为 C 库/程序接口编写新 PHP 模块的需求,因为现在可以使用外部函数接口来完成了。如果你对 PHP 7.4 FFI 的示例代码感到好奇,负责 Fedora/RedHat 的 PHP 打包程序工程师 Remi Collet 撰写了一篇新的博客文章,其中概述了一些带有示例代码的用例。
下面摘录一个简单的例子:
Redis 客户端
目前存在使用 C 或 PHP 编写的 Redis 客户端的各种实现,此示例演示了使用 FFI 来访问 hiredis 库的函数。
- 定义库,从库的头文件 hiredis/hredis.h 和 hiredis/read.h 复制/粘贴:preload-redis.h
- 对需要预加载的 Remi\Redis 类进行定义:preload-redis.inc
- 使用此类的测试脚本:redis.php
输出摘要
$ php74 -d ffi.preload=preload-redis.h -d opcache.preload=preload-redis.inc redis.php ... + Remi\Redis::__construct(localhost, 6379) + Remi\Redis::initFFI() + Remi\Redis::del(foo) int(1) + Remi\Redis::get(foo) NULL + Remi\Redis::set(foo, 2019/10/23 12:45:03) string(2) "OK" + Remi\Redis::get(foo) string(19) "2019/10/23 12:45:03" + Remi\Redis::__destruct
如果希望了解有关 PHP 7.4 FFI 的更多信息,可以查看 PHP.net 上的文档及其基本示例。在发布 PHP 7.4 GA 前估计会经历多个 RC 版本,GA 预计将在 11 月 28 日左右发布。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Gitee + 区块链:基于 IPFS 的 Git 分布式存储技术探索
Gitee 团队一直在探索如何提供一个更安全、稳定甚至是去中心化的代码托管环境。也一直在跟踪兴起的存储区块链技术,其中就深入的研究了 IPFS 协议,同时在探索 IPFS 协议在代码托管上的落地的可行性和优缺点。 IPFS (InterPlanetary File System – 星际文件系统) 是一个基于内容哈希寻址的点对点的超媒体分发协议,2014 年开始由 Protocol labs 在开源社区下推动发展,目前已经提供了基于 Golang 的开源实现(详情请访问:https://github.com/ipfs/ipfs),站在存储角度,IPFS 具有如下主要特点: 去中心化存储,相对目前的基于 HTTP 的中心化存储网络,去中心化存储可以避免大型中心服务器的单点故障的问题。 基于内容寻址,IPFS 的内容定位不在通过URI 的形式,而是通过内容的唯一hash 进行定位得到内容的存储地址。 天然抵抗 DDOS,基于其去中心化和内容寻址的特点,IPFS 网络具备天然抵抗 DDOS 的特性。 减少存储冗余,IPFS 会对文件按照一定的尺寸进行拆分,然后对每个分片计算 hash,对于相...
- 下一篇
Linus Torvalds:我不再是一名程序员了
在近期举行的欧洲开源峰会上,Linus Torvalds 与 VMware 的首席开源官Dirk Hohndel 进行了公开对谈。期间,他表示不再认为自己是一名程序员。 Torvalds 解释说,他不再了解编码了,目前写的大多数代码都在电子邮件中。每当有人发送了补丁,他就用伪代码回复。现在的Torvalds 对编辑补丁习以为常,有时还会将未经测试的补丁直接发送出去。他要做的,就是在邮件中告诉别人“我认为应当这样”。“但这就是我所从事的,我不再是程序员了”。 实际上Torvalds 的工作内容不仅仅是读写电子邮件。他认为自己工作的本质是对人说“不”,必须有人对一些补丁或 PR 之类的说“不”。在他看来,如果开发者得知有被拒绝的可能,将会更好地编写代码。 简而言之,如今的 Linus Torvalds 是代码管理者和维护者,而不是开发人员。迅速响应别人发来的补丁,及时给出反馈,并保持维护状态,Torvalds 对此感觉还好,这是一名代码维护者应做的。 这些听起来也许有些无趣,毕竟Linus Torvalds 算是众人皆知的有趣人士,他的早期自传就叫《只是为了好玩》(Just for Fun...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8安装Docker,最新的服务器搭配容器使用
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- 设置Eclipse缩进为4个空格,增强代码规范
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能