主题 : PHP 7.4的FFI将更好支持使用C函数/数据结构
千山同一月 万户尽皆春 千江有水千江月 万里无云万里天
级别: 总版主

UID: 998
精华: 0
发帖: 605059
威望: 529688 点
无痕币: 0 WHB
贡献值: 0 点
在线时间: 62621(时)
注册时间: 2008-12-25
最后登录: 2024-05-20

0 PHP 7.4的FFI将更好支持使用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.-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[/pre]如果希望了解有关 PHP 7.4 FFI 的更多信息,可以查看 PHP.net 上的文档及其基本示例。在发布 PHP 7.4 GA 前估计会经历多个 RC 版本,GA 预计将在 11 月 28 日左右发布。
千山同一月 万户尽皆春 千江有水千江月 万里无云万里天
级别: 总版主

UID: 998
精华: 0
发帖: 605059
威望: 529688 点
无痕币: 0 WHB
贡献值: 0 点
在线时间: 62621(时)
注册时间: 2008-12-25
最后登录: 2024-05-20

这个可以看看,了解一下。
Total 0.039534(s) query 4, Time now is:05-20 09:47, Gzip enabled 粤ICP备07514325号-1
Powered by PHPWind v7.3.2 Certificate Code © 2003-13 秋无痕论坛