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

Zend 的 Dmitry Stogov 通过允许 PHP 执行嵌入式 C 代码扩展了 PHP 的领域。 这将允许完全访问本地 C 函数,变量以及数据结构。 2018-04-22 00:04:04 PHP C 代码数据 JavaScript 如何打败众语言,成为 Node 的实现语言? Node.js 是一种将 JS 放在服务器端实现的平台,而为什么要把js放到服务器端实现,JS 最初设计是在浏览器端解释执行,后来为什么搞Node.js 把他放在服务器端执行呢? 2018-04-22 00:01:43 JavaScript Node 语言 数据科学入门必读:如何使用正则表达式? 正则表达式对数据处理而言非常重要。近日,Dataquest 博客发布了一篇针对入门级数据科学家的正则表达式介绍文章,通过实际操作详细阐述了正则表达式的使用方法和一些技巧。 2018-04-21 07:11:53 正则表达式Python函数 通过 Q-learning 深入理解强化学习 本文将带你学习经典强化学习算法 Q-learning 的相关知识。在这篇文章中,你将学到:(1)Q-learning 的概念解释和算法详解;(2)通过 Numpy 实现 Q-learning。

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

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

[[226718]]

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

输入:

  1. <?php$libc=newFFI("
  2. intprintf(constchar*format,...);
  3. char*getenv(constchar*);
  4. unsignedinttime(unsignedint*);
  5. typedefunsignedinttime_t;
  6. typedefunsignedintsuseconds_t;
  7. structtimeval{
  8. time_ttv_sec;
  9. suseconds_ttv_usec;
  10. };
  11. structtimezone{
  12. inttz_minuteswest;
  13. inttz_dsttime;
  14. };
  15. intgettimeofday(structtimeval*tv,structtimezone*tz);
  16. ","libc.so.6");$libc->printf("HelloWorldfrom%s!\n","PHP");
  17. var_dump($libc->getenv("PATH"));
  18. var_dump($libc->time(null));$tv=$libc->new("structtimeval");$tz=$libc->new("structtimezone");$libc->gettimeofday($tv,$tz);
  19. var_dump($tv->tv_sec,$tv->tv_usec,$tz);?>

将输出:

  1. HelloWorldfromPHP!
  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)
  10. }

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

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

©本文为清一色官方代发,观点仅代表作者本人,与清一色无关。清一色对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。本文不作为投资理财建议,请读者仅作参考,并请自行承担全部责任。文中部分文字/图片/视频/音频等来源于网络,如侵犯到著作权人的权利,请与我们联系(微信/QQ:1074760229)。转载请注明出处:清一色财经

(0)
打赏 微信扫码打赏 微信扫码打赏 支付宝扫码打赏 支付宝扫码打赏
清一色的头像清一色管理团队
上一篇 2023年5月5日 03:18
下一篇 2023年5月5日 03:18

相关推荐

发表评论

登录后才能评论

联系我们

在线咨询:1643011589-QQbutton

手机:13798586780

QQ/微信:1074760229

QQ群:551893940

工作时间:工作日9:00-18:00,节假日休息

关注微信