TypePHP 编译器
https://swoole.com/aot/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1.9 KiB
1.9 KiB
PHP builder
在 mode: bin 下,TypePHP 将产物类型与 PHP SAPI 分开配置:
mode: bin
sapi: [embed, cli, fpm]
php-builder:
extensions: [swoole, mongodb]
zts: on
sapi 用于选择一个或多个进程接口,默认值是 embed。cli 和 fpm 不是 mode;
由于宿主 PHP 安装不提供这些目标所需的静态构建输入,它们始终强依赖
php-builder。
php-builder 表示 TypePHP 从官方 php-src 归档构建私有 PHP 运行时。产物不依赖
宿主机 PHP 运行时,但会使用操作系统提供的开发库。官方 php-src 缓存不会被修改;
外部 PECL 扩展会注入派生的源码目录。显式 extensions、项目源码、YAML 依赖和
内嵌 Composer 元数据中的扩展需求会合并,并自动转换为 PHP configure 参数。
等价的命令行为:
bin/tpc.php project.yml \
--sapi=embed,cli,fpm \
--php-builder='extensions: [swoole, mongodb]; zts: on'
zts 接受 on 或 off。php-builder.sapi 是非法配置;SAPI 始终通过独立的
顶层 sapi 选项指定。
默认 Embed 行为
未配置 php-builder 时,mode: bin 加 sapi: embed 保持原有行为,链接宿主机
Embed 库(libphp.so 或 libphp.dylib)。Linux 或 macOS 上缺少该库时,交互式
运行会询问是否启用 php-builder。非交互环境必须显式选择:
bin/tpc.php project.yml \
--php-builder='extensions: []; zts: off'
若拒绝提示,则没有可用的 Embed 运行时,构建会停止。
缓存与代理
下载的源码和私有运行时缓存在 ~/.typephp,兼容的运行时会在不同应用构建之间复用。
--proxy 是全局网络设置,不属于 php-builder;PHP、PECL 元数据与归档,以及
TypePHP 的其他网络传输,都会使用指定的 HTTP(S) 或 SOCKS 代理。
bin/tpc.php project.yml --proxy=socks5h://127.0.0.1:1080 \
--php-builder='extensions: []; zts: off'