|
|
|
|
移动端

PHP FFI 允许在 PHP 脚本中嵌入 C 代码

Zend 的 Dmitry Stogov 通过允许 PHP 执行嵌入式 C 代码扩展了 PHP 的领域。 这将允许完全访问本地 C 函数,变量以及数据结构。

作者:开源中国编译来源:react-etc.net|2018-04-22 00:04

技术沙龙 | 邀您于8月25日与国美/AWS/转转三位专家共同探讨小程序电商实战

Zend 的 Dmitry Stogov 通过允许 PHP 执行嵌入式 C 代码扩展了 PHP 的领域。 这将允许完全访问本地 C 函数,变量以及数据结构。

解决方案 PHP FFI 作为实验性扩展提供,但要求 PHP 7.3 的开发版本。 该解决方案还不能用于生产,但它构建在坚实的基础之上,使用 FFI(外部函数接口)库 libffi,允许高级语言生成代码。

输入:

  1. <?php$libc = new FFI(" 
  2.     int printf(const char *format, ...); 
  3.     char * getenv(const char *); 
  4.     unsigned int time(unsigned int *); 
  5.  
  6.     typedef unsigned int time_t; 
  7.     typedef unsigned int suseconds_t; 
  8.  
  9.     struct timeval { 
  10.         time_t      tv_sec; 
  11.         suseconds_t tv_usec; 
  12.     }; 
  13.  
  14.     struct timezone { 
  15.         int tz_minuteswest; 
  16.         int tz_dsttime; 
  17.     }; 
  18.  
  19.     int gettimeofday(struct timeval *tv, struct timezone *tz);     
  20. ", "libc.so.6");$libc->printf("Hello World from %s!\n", "PHP"); 
  21. var_dump($libc->getenv("PATH")); 
  22. var_dump($libc->time(null));$tv = $libc->new("struct timeval");$tz = $libc->new("struct timezone");$libc->gettimeofday($tv$tz); 
  23. var_dump($tv->tv_sec, $tv->tv_usec, $tz);?> 

将输出:

  1. Hello World from PHP! 
  2. 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) 
  3. int(1523617815) 
  4. int(977765) 
  5. object(CData)#3 (2) { 
  6.   ["tz_minuteswest"]=> 
  7.   int(-180) 
  8.   ["tz_dsttime"]=> 
  9.   int(0) 

FFI 目前的数据结构访问还比较缓慢,比访问原始 PHP 数组和对象的速度慢大约 4 倍。现阶段的速度虽然不太乐观,但还是可以帮助节省内存和资金的。

随着 PHP FFI 后续的不断优化,性能还会不断提升。

【编辑推荐】

  1. 用数据赋能新零售 解密背后的黑科技
  2. Web 开发员 vs 数据科学家:谁将统治 Python?
  3. 终于有人把云计算、大数据和人工智能讲明白了_技术栈微信半月刊第14期
  4. 2018 年 4 月全球数据库排名:PostgreSQL 略有下降
  5. StackOverflow 调查:富裕国家流行 Python 和 C 语言,低收入国家爱用 PHP
【责任编辑:张燕妮 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢
24H热文
一周话题
本月最赞

读 书 +更多

网管员必读—服务器与数据存储(第2版)

本书是在第1版的基础上全面更新、改版而成的,仍然是目前图书市场中唯一一本全面介绍硬件服务器的IT图书。本书针对近两年来所出现的新服务...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊