视频有点长,1.5倍速看也没问题.
从一个新装好的Ubuntu 24.04 Desktop的虚拟机开始:
composer + PHP 运行项目没问题
去掉 composer 运行项目没问题
PHP 跑通 PHPUnit 测试
BPC编译跑通PHPUnit测试
PHP 环境下项目各项功能测试没问题
BPC编译运行起来项目各项功能测试没问题
【PHP编译器BPC编译ThinkPHP8 + PHPUnit测试】 https://www.bilibili.com/video/BV1Laece6Epr/?share_source=copy_web&vd_source=fb7701afa4e3c4faaffabbe49ab11ac2
赞
好东西
大佬是否可以项目中部分文件编译然后在框架中使用呢?
bpc可以将php代码编译成.so,bigloo scheme可以将scheme函数export出来成C函数,接下来如果你能搞定让PHP调用这个C函数(写成PHP扩展或者通过ffi调用)那就可以.
不过这也太折腾了.所以基本上可以说是不可以的.
佬,如果这个编译webman有没有问题,还有就是配置文件如何暴露出来啊
配置的话有两种方式:
赞 666
接下来几个问题
易用性:是否有独立的二进制包,或者以后打算
生态连接:是否使用能ffi拓展和使用ffi能否进行编译
生态发展:编写专属拓展的难度性、限制性
折腾过一下,感觉会比较麻烦
编译生成的scheme代码最终link时根据项目需要要link不同地扩展,如果是dynamic link需要.so,如果是static link需要.a.
但被编译的PHP项目通过static link可以生成一个独立的二进制文件.
现在编译器被分成了两个tar包,只要解压然后依赖的系统包安装上就好了.
当然也可以做成一个tar包,或者进一步做成deb/rpm包什么的.
只所以分开是为了dynamic link的PHP二进制文件发布时,它依赖的.so文件都在bpc-common.tar.gz里,bpc-compiler.tar.gz是编译器需要的,编译好的PHP二进制文件不需要bpc-compiler.tar.gz里的文件.
另外,PHP代码也可以编译成像扩展那样的.so/.a,这可以使得PHP项目能够半开源.
你可以将你项目的部分代码编译成.so/.a连带其它PHP代码交付,其它人可以修改拿到的PHP代码做二次开发,然后和你的.so/.a link到一起.
不明白 "是否使用能ffi拓展和使用ffi能否进行编译" 这句话的意思.
编写扩展是非常容易的,参考下边三个示例: