一文详解Rust怎么开发PHP扩展(Liunx版)
php入门到就业线上直播课:进入学习
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API调试工具:点击使用
众所周知,作为一名phper,对php有限的功能感到尴尬,比如:调用ffmpeg视频处理工具。没有专门的扩展来操作的,什么?利用php system函数调用?对于开源的php脚本,这太不安全了!
这个时候作为深资的phper会考虑开发php扩展,在扩展中实现对ffmpeg的操作。
目前c站上对于rust如何开发php扩展的文章几乎没有,就连开发php扩展流程的文章也都很对付。特此撰写此文!!!
为什么要使用php扩展?
优点:
1、php扩展是C开发的,那速度没得说。
2、耦合性高,它的出现就是用来增强php的。
3、安全性高,毕竟扩展是编译后的程序,代码不开源。
缺点:
1、需针对php版本及系统环境进行开发,那么就比较麻烦了。也就是说7.4版本的php,liunx环境下开发的扩展,只支持该php版本及系统。
2、需要会C、C++,当然本文是以rust进行开发,对C的数据类型进行了解,对rust FFI的操作及数据类型转换需精通。
3、调试相对麻烦。
为什么要用rust开发php扩展?
原因很简单,这还要说起rust的语言特性。
1、因“所有权”的特性使你的程序更安全,不会像C那样出现各种“玄学BUG”。
2、拥有C一样的性能。
3、毕竟是最受欢迎的语言,我很看好它的发展。
rust开发php扩展流程:
当然,rust目前是没有专门开发php扩展的骨架。所以我的逻辑也很简单,利用rust开发静态库暴露给C【涉及FFI的了解】。我们在php官方骨架中直接引入rust静态库调用其方法即可。
开发环境
宝塔【CentOS 7.6】、GCC【涉及php扩展骨架的编译,我这里系统内置就有,如果编译扩展报相关错了自行安装】、对应php版本源码、web环境【宝塔中安装对应php版本、nginx、mysql等等】
开发整体流程:
1、准备宝塔
宝塔安装流程:CentOS宝塔搭建(超详细)_一码超人的博客-CSDN博客_centos 宝塔
这里我们以开发php7.4扩展为例。
2、下载php7.4 liunx版源码
php官网:PHP: Hypertext Preprocessor
注意!该源码版本必须与你环境php版本完全一致!!!
下载完毕:
3、上传php源码到宝塔
这里我们以开发php7.4扩展为例。
2、下载php7.4 liunx版源码
php官网:PHP: Hypertext Preprocessor
注意!该源码版本必须与你环境php版本完全一致!!!
下载完毕:
3、上传php源码到宝塔
/usr/phper
登录后复制