利用FFI在PHP中调用C/Go SO库
以往在PHP中调用外部语言编写的SO库,需要编写PHP扩展。但从PHP 7.4版本开始,借助FFI(Foreign Function Interface),无需扩展即可直接调用SO库。
此方法的步骤如下:
示例:
立即学习“PHP免费学习笔记(深入)”;
假设有一个C函数:
int get_timestamp(struct timeval *tv) { gettimeofday(tv, NULL); return tv->tv_sec; }
使用FFI在PHP中调用该函数:
<?php $ffi = FFI::cdef(" typedef long time_t; struct timeval { time_t tv_sec; long tv_usec; }; int get_timestamp(struct timeval *tv); ", "mylib.so"); $tv = $ffi->new("timeval"); $timestamp = $ffi->get_timestamp(FFI::addr($tv)); echo $tv->tv_sec . " " . $tv->tv_usec . PHP_EOL; ?>
重要提示:
FFI目前仍处于实验阶段,稳定性有待进一步提升。
以上就是PHP 7.4 之后如何使用FFI无需扩展调用C/Go SO库?的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号