许多开发人员在PHP中使用外部函数接口。在这里,我们介绍了它是什么以及如何使用它。
PHP外部函数接口(FFI)是PHP 7.4中的接口,使开发人员可以使用纯PHP创建扩展和对外部(也称为“外部”)库的绑定。
他们还可以使用它来调用C函数并访问C数据结构。
PHP中的外部函数接口是具有开创性的,因为以前,开发人员只能创建扩展和对外部(也称为“外部”)库的绑定-并使用C语言编写的PHP扩展和绑定来调用C函数并访问C数据结构。能够使用纯PHP完成这些任务:
节省时间。
为PHP开发人员创造了新的机会-例如使在代码中使用机器学习更加容易。
能够使用PHP中的此接口直接从PHP代码连接到外部C共享库,从而节省了开发人员时间,因为他们可以最大程度地减少用C编写新的PHP扩展和绑定的需要。
例如,使用界面,他们可以:
对不具有PHP扩展名的库启用快速原型制作。
为没有C专业知识并且需要与共享库(包括专有软件中的库)接口的商店提供解决方案。有了足够的PHP专业知识,他们现在可以在内部开发绑定。
PHP中的该接口具有一些有趣的应用程序,这些应用程序可以使用异步PHP(包括Swoole)以及预加载时间长的库,例如机器学习模型。另外,由于该扩展使调用C函数和C数据结构更加容易,因此组织可以在C中开发一段代码来更快地运行CPU密集型工作负载,并使用该接口进行连接。
如今,PHP社区的领导者正在测试此PHP接口的使用,以支持PHP应用程序中不经常使用的功能。例如:
外部函数接口最初在Python和LuaJIT中可用,并且使这些语言对于快速原型制作非常有用。如今,许多语言都具有这种类型的界面。
Dmitry Stogov是PHP的主要核心贡献者之一,也是Perforce员工的Zend,他写了PHP FFI。它最初是在PHP 7.4中引入的,仍被认为是实验性的。到2020年,社区可能会在扩展中添加更多功能,并提高其性能。
现在说还为时过早,尽管PHP中的此接口不太可能会取代PHP扩展。许多PHP扩展不仅仅是使用PHP数据对象(PDO)绑定到C库。但是,如果外部功能接口的性能达到或更高,则可能会替换更简单的扩展名。在撰写此博客时,几乎在每种情况下,PHP的此接口都比纯C / C ++扩展慢。
开始在PHP中使用此接口非常简单:
为要与之绑定的库创建一个最小的头文件。头文件(C中的.h文件)定义了PHP和数据类型将可用的接口。
使用该头文件和/或您要加载的库实例化FFI。
如果需要,请准备数据结构,然后从要通过FFI实例绑定的库中调用函数,就好像它们是FFI对象的方法一样。
警告:由于此扩展仍处于试验阶段,并且启用了系统之间的日志级别接口,因此,只有在具有C和代码中C API的高级知识的情况下,才应使用该扩展。您可以使用ffi.enable指令将风险降至最低。
所有网站中有将近80%是用PHP编写的。组织正在使用诸如PHP接口和PHP扩展之类的功能来帮助发展其站点并使用现代Web服务实现更大的创新。
我们对500多家PHP开发人员和商业领袖进行了调查,调查了他们的使用和涉及PHP的战略计划。立即阅读报告。
本文转载自zend官方blog
c#中string和StringBuilder直接看看执行速度。(2).String类型累计赋值Test  ...
【一】.钩子文件的设置和创建(1).打开hooks目录,可以看到有一个post-commit.tmpl文件,这是一个模板文件。复制一份,重命名为post-commit,将其用户组设为www,并设置为可执行。chown www:www post-commitchmod +x post-commit(2...
在安装之前我们先看看官方给出的依赖关系.首先是dll文件和mongodb软件的依赖关系然后是PHP文件和dll的依赖关系我的是phpstudy的集成环境PHP5.4.45 NTS+Apache+Mysql【一】.安装mongodb3.0软件对比依赖关系下载mongodb3.0.msi软件,完整名称:...
1.远程仓库的协作模式开发者把自己最新的版本推到线上仓库,同时把线上仓库的最新代码,拉到自己本地即可2.注册git帐号国外: http://www.github.com国内: http://git.oschina.net2.在码云创建项目,不要初始化readmegit push https://gi...
git pull https://git.oschina.net/392223903/learn.git master 换为您的git地址...
1.关机Process.Start("shutdown", "-s -t 0"); 2. 注销 Proc...