静态编译PHP 运行时
静态编译PHP运行时
编译步骤这样划分:
- 下载指定版本PHP源码
- 下载对应版本的扩展
- 下载扩展对应版本的依赖库
- 静态编译扩展依赖库
- 静态编译之前,准备工作
- 修改相应参数
- 执行编译
- 执行构建
- 打包
不同操作系统,不同cpu架构,都执行一遍上面的流程。
linux macos window + CPU arch
MacOS, Windows, Linux x86/x86_64/arm/aarch64/mips/mipsel
静态编译PHP 运行时 swoole-cli 实践
快速进入编译环节(借助容器,可以跳过安装依赖库环节,使用提前编译好依赖库)
#!/bin/bash
__DIR__=$(
cd "$(dirname "$0")"
pwd
)
TAG='all-dependencies-alpine-20230330T153237Z'
ALIYUN_IMAGE="registry.cn-beijing.aliyuncs.com/jingjingxyk-public/app:build-swoole-cli-${TAG}"
docker run --rm --name swoole-cli-build-dev-all-dependencies-container -d -v ${__DIR__}:/work -w /work $ALIYUN_IMAGE tail -f /dev/null
编译脚本
- swoole-cli main 分支构建步骤
- 静态编译 PHP 8 系列、PHP7.4 、PHP7.3
- 静态编译PHP 运行时 swoole-cli 实践
- build-native-php
- build-php-8.2
- build-php-7.4
- build-php-7.3
下载已经编译好的PHP运行时
- PHP runtime 下载站点 1 static-php-cli
- PHP runtime 下载站点 2 swoole/swoole-cli
- PHP runtime 下载站点 3 swoole/swoole-cli
- PHP runtime 下载站点 4 jingjingxyk/swoole-cli
编译静态PHP 解析器 参考文档
- crazywhalecc/static-php-cl
- dixyes/lwmbs
- lihq1403/lwmbs-build
- swoole/swoole-cli
- phpbrew/phpbrew.
- php/php-src
- jingjingxyk/swoole-cli
- postgresql静态编译libpq
- alpine c-ares-static 依赖问题
- PHP四种运行模式
- Swow:我是谁?我能做什么?
参考文档
- Swoole-Cli 5.0.1:PHP 的二进制发行版
- Swoole v5.0 版本新特性预览之新的运行模式
- Swoole-Cli 5.0.1 使用说明
- swoole wiki
- 关于 PHP 8.1 的 Fiber RFC 用户真正需要的是一种完整的、系统性、成体系、简单易用、可靠的一整套技术方案
- php常见的四种运行模式
- 异步 I/O 框架 io_uring
- 零拷贝(Zero-Copy)
- 使用socket so_reuseport提高服务端性能
- IO多路复用之select、poll、epoll的区别
- 高并发下如何保证接口的幂等性
- 一文理解如何实现接口的幂等性
- 一文搞懂分布式锁的原理与实现
- 领域驱动设计(DDD:Domain-Driven Design)
- Libevent、libev、libuv三个网络库 对比,都是c语言实现的异步事件库
- Swow:我是谁?我能做什么?
- workerman开源高性能PHP应用容器
- Hyperf
实践代码
- swoole-cli CI
- build-config-php-8.sh
- jingjingxyk/swoole-cli 编译PDO_PGSQL扩展
- 编译相关实验
- swoole-cli main 分支构建步骤
- 静态编译 PHP 8 系列、PHP7.4 、PHP7.3