
无需加好友免费技术支持
大家都知道,php欠缺一些作用有时也会感到尴尬,比如:调用ffmpeg视频解决专用工具php system函数启用?php脚本制作,太不没事了!这时将考虑到开发php完成扩展ffmpeg的实际操作。
为什么使用?php扩展?
优势:
php扩展是C开发的,速率别说。耦合度高,用以提高php是的。安全系数高,终究扩展是编译程序流程,编码不开源系统。
需对于php开发版本和系统环境非常麻烦。换句话说,7.4版本php,liunx只适用自然环境持续发展的扩大php版本和系统。必须会C、C ,自然,文中是以rust开发,掌握C的基本数据类型,掌握Crust FFI熟练和操作数据类型转换。调节非常麻烦。为何要用rust开发php扩展?
缘故非常简单,我们应该谈一谈rust的语言表达特点
由于所有权特性,你程序流程安全系数高,也不会像C那般出现一些风水玄学BUG.拥有C性能,我也是很看中它发展趋势。
rust开发php扩展步骤:
自然,rust现在还没有专业开发php扩展框架。所以我的逻辑性很简单,用rust开发静态库曝露C【涉及到FFI大家在php立即引进官方网框架rust静态库能够启用其方式。
开发自然环境
宝塔面板【CentOS 7.6】、GCC【涉及到php针对扩展框架的编译,我还在这里有一个内嵌的软件。假如编译,自主组装
总体开发步骤:
我们在这里开发php7.4扩展为例子。
2、免费下载php7.4 liunx版源代码
php官网:
留意!这一源代码版本务必和你的自然环境相符合php版本完全一致!
3、提交php源码到宝塔面板
在usr下建立一个phper文件夹,再将源码压缩文件上传至这儿。
文件解压
4.打造自己的扩大
/usr/phper/php-7.4.30/ext文件目录样一个文件目录php文件,它能够建立扩展!
留意设定cmd版本,由于下面使用php指令一定要和版本一致!
点一下终端设备,在刚才那目录下键入扩展指令。
这里有一个一个新的扩展源代码文件。
点一下此目录下的终端设备,键入:
然后键入:
留意这一主要参数php途径,假如是别的版本,请安装在宝塔面板中寻找相对应的路线,它们都放在一起。
回车键逐渐查验
最终键入:
开展编译。
这一文件目录是编译的so扩展最后文件!
一起来看看默认设置所产生的扩展作用。
查询主文件要了解php以它默认设置给的框架为例子。
换句话说,刚编译的扩展有2个函数公式。使我们测试一下。
留意!每一次改动主文件,都要按上述指令再度运作,不然不生效,好奇怪!
5、应用扩展
将刚产生的扩展文件拷贝到大家身上php在自然环境扩大中
配备php.ini加载hello.so扩展
储存后还记得重新启动php,不然不生效!
点一下文件管理方面的终端设备,键入:
目录中可以看出我们自己的扩展。
在测试下扩展2个函数公式时,创建一个网站。
看中,php版本是7.4
浏览网站,发觉没什么问题。
当然你也可以根据指令运作php脚本制作查看结果基础是网址在哪儿里phpcmd版本设定7.4】
OK!从建立到形成到应用扩展的一个过程完毕,随后进到主题风格,逐渐使用rust开发扩展。
6、rust与php融合开发的扩展
开发专用工具:CLion
必须rust环境与CLion中rust外挂安装和硬件配置,这一一个人去百度搜索,比我想象的要详细!
建立一个hello命名库新项目
大家写两个导出来函数公式,即加减法作用和base64字符串数组剖析作用。
lib.rs
Cargo.toml
留意编译过程的系统类型,不然静态库编译扩展的引进可能报告错误,提醒不兼容。
64位静态库的编译
编译32个静态库
我们都是64位系统软件。
会形成一个.a这一文件便是文件liunx适用静态库文件。
形成适用C语言的胶头文件【便捷C启用库文件必须所写的函数声明】
建立 cbindgen.toml 文件
具体内容:
安装cbindgen,建立头文件。
C语言的函数声明一键生成hello.h调用文件。
返回之前我们造就的hello扩展
创建lib文件夹
刚编译的静态库.a文件上传至lib目录下
刚建立的.h把头文件上传至扩展目录下
配备.m4预编译文件重要
设定引入lib静态库文件夹中的静态库文件
储存.m4
撰写主文件
删掉以前产生的扩展文件
再形成扩展
尺寸都变了,表明我们自己的静态库在房间里。
依据上述扩展全过程更换扩展
留意!拆换扩展文件后重新启动PHP哦,不然不生效!
7、检测rust开发的php扩展
网页页面评估和cmd检测
还可以通过php立即检测扩展框架
撰写要实行测试扩展函数公式
立即键入扩展文件目录:
实行后 tests导出一个文件目录.out文件
是 这个不是更方便吗?