Zend 的 Dmitry Stogov 通过允许 PHP 执行嵌入式 C 代码扩展了 PHP 的领域。 这将允许完全访问本地 C 函数,变量以及数据结构。
解决方案 PHP FFI 作为实验性扩展提供,但要求 PHP 7.3 的开发版本。 该解决方案还不能用于生产,但它构建在坚实的基础之上,使用 FFI(外部函数接口)库 libffi,允许高级语言生成代码。
输入:
<?php$libc = new FFI(" int printf(const char *format, ...); char * getenv(const char *); unsigned int time(unsigned int *); typedef unsigned int time_t; typedef unsigned int suseconds_t; struct timeval { time_t tv_sec; suseconds_t tv_usec; }; struct timezone { int tz_minuteswest; int tz_dsttime; }; int gettimeofday(struct timeval *tv, struct timezone *tz); ", "libc.so.6");$libc->printf("Hello World from %s!
", "PHP"); var_dump($libc->getenv("PATH")); var_dump($libc->time(null));$tv = $libc->new("struct timeval");$tz = $libc->new("struct timezone");$libc->gettimeofday($tv, $tz); var_dump($tv->tv_sec, $tv->tv_usec, $tz);?> 将输出:
Hello World from PHP! string(135) "/usr/lib64/qt-3.3/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/home/dmitry/.local/bin:/home/dmitry/bin"int(1523617815) int(1523617815) int(977765) (CData)#3 (2) { ["tz_minuteswest"]=> int(-180) ["tz_dsttime"]=> int(0) } FFI 目前的数据结构访问还比较缓慢,比访问原始 PHP 数组和对象的速度慢大约 4 倍。现阶段的速度虽然不太乐观,但还是可以帮助节省内存和资金的。
随着 PHP FFI 后续的不断优化,性能还会不断提升。
【编辑推荐】
- 用数据赋能新零售 解密背后的黑科技
- Web 开发员 vs 数据科学家:谁将统治 Python?
- 终于有人把云计算、大数据和人工智能讲明白了_技术栈微信半月刊第14期
- 2018 年 4 月全球数据库排名:PostgreSQL 略有下降
- StackOverflow 调查:富裕国家流行 Python 和 C 语言,低收入国家爱用 PHP
【责任编辑:张燕妮 TEL:(010)68476606】
继续阅读与本文标签相同的文章
下一篇 :
Android实现多维商品属性SKU选择
-
便利店如何建立高效的物流信息系统平台
2026-05-18栏目: 教程
-
人工智能社会实验研究全面展开
2026-05-18栏目: 教程
-
OpenAI机械手“学习”解开三阶魔方技术
2026-05-18栏目: 教程
-
5G时代,能给我们带来什么样的生活改观
2026-05-18栏目: 教程
-
第六届世界互联网大会将首次启用新展馆
2026-05-18栏目: 教程
