PHP编译器BPC编译ThinkPHP8 + PHPUnit测试 的视频来了

heguangyu5

视频有点长,1.5倍速看也没问题.

从一个新装好的Ubuntu 24.04 Desktop的虚拟机开始:

  1. composer + PHP 运行项目没问题

  2. 去掉 composer 运行项目没问题

  3. PHP 跑通 PHPUnit 测试

  4. BPC编译跑通PHPUnit测试

  5. PHP 环境下项目各项功能测试没问题

  6. BPC编译运行起来项目各项功能测试没问题

【PHP编译器BPC编译ThinkPHP8 + PHPUnit测试】 https://www.bilibili.com/video/BV1Laece6Epr/?share_source=copy_web&vd_source=fb7701afa4e3c4faaffabbe49ab11ac2

453 5 0
5个评论

小吴大大

  • 暂无评论
cclilshy

好东西

  • 暂无评论
张大娃

大佬是否可以项目中部分文件编译然后在框架中使用呢?

  • heguangyu5 2024-09-26

    bpc可以将php代码编译成.so,bigloo scheme可以将scheme函数export出来成C函数,接下来如果你能搞定让PHP调用这个C函数(写成PHP扩展或者通过ffi调用)那就可以.

    不过这也太折腾了.所以基本上可以说是不可以的.

故人重来

佬,如果这个编译webman有没有问题,还有就是配置文件如何暴露出来啊

  • heguangyu5 2024-09-26

    配置的话有两种方式:

    1. 环境变量,在php代码里通过getenv获取
    2. 修改加载配置文件的代码,原来是include php,可以改成json,ini,txt或者其它什么适合的
KingBes

赞 666

接下来几个问题

  1. 易用性:是否有独立的二进制包,或者以后打算

  2. 生态连接:是否使用能ffi拓展和使用ffi能否进行编译

  3. 生态发展:编写专属拓展的难度性、限制性

折腾过一下,感觉会比较麻烦

  • heguangyu5 2024-09-26
    1. 编译器自身不可能有独立的二进制包.

    编译生成的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到一起.

    1. 不明白 "是否使用能ffi拓展和使用ffi能否进行编译" 这句话的意思.

    2. 编写扩展是非常容易的,参考下边三个示例:

heguangyu5

2100
积分
0
获赞数
0
粉丝数
2022-11-24 加入
×
🔝