首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >告别解释执行!用 Swoole AOT 编译你的第一个 PHP Windows 原生应用

告别解释执行!用 Swoole AOT 编译你的第一个 PHP Windows 原生应用

作者头像
Tinywan
发布2026-07-01 17:30:06
发布2026-07-01 17:30:06
660
举报
文章被收录于专栏:开源技术小栈开源技术小栈

概述

PHP 长期作为解释型语言,在性能上难以与 Rust、Go 等编译型语言竞争。

Swoole-Compiler v4 推出的 Native AOT(Ahead-of-Time)编译器 改变了这一现状。

它能将 PHP 代码直接编译为原生二进制可执行文件,性能相比传统 PHP 解释器提升可达上百倍,达到与 Rust、Golang 相当的水平。

核心特点

  • 直接生成机器指令(非 opcode)
  • 与 ZendPHP 底层库兼容(ABI 互通)
  • 不依赖 ZendVM 执行器

参考文章:Swoole-Compiler 将提供 PHP Native AOT 编译器,支持将 PHP 代码编译为可执行文件,运算性能提高 150 倍

运行机制

与 HHVM、KPHP 不同,Swoole AOT 不是 PHP 的另一种实现。它使用 ZendPHP 底层库 + PHPX 兼容层,直接将 PHP 代码编译为 C++ 风格的机器指令,运行机制与 C++/Go 一致。

准备环境

1. 安装 Visual Studio 2022(VS17)

  • 下载社区版:https://visualstudio.microsoft.com/zh-hans/vs/community/
  • 必须勾选:“使用 C++ 的桌面开发”

2. 下载 Swoole-Compiler-Windows

  • 下载地址:https://github.com/swoole/aot-compiler/releases
  • 解压到推荐路径,例如:D:\workspace\swoole-compiler-windows-x64

3. 配置环境变量

代码语言:javascript
复制
PHP_HOME=D:\workspace\swoole-compiler-windows-x64
PHPX_HOME=D:\workspace\swoole-compiler-windows-x64\phpx
# 将以下路径添加到 Path
D:\workspace\swoole-compiler-windows-x64

提示:软件包内已包含完整 PHP 8.4 ZTS,可通过 php.ini 加载扩展。

编译 PHP 程序

示例代码 hello.php

代码语言:javascript
复制
<?php

declare(strict_types=1);

function main(): void
{
    echo "Hello Tinywan ".PHP_EOL;
    var_dump(PHP_VERSION);
    var_dump(php_uname());
    global $argv;
    var_dump($argv);
}

编译命令

代码语言:javascript
复制
cd D:\workspace\swoole-compiler-windows-x64

.\swoole_compiler.exe .\hello.php

正常输出

代码语言:javascript
复制
Initialized platform/backend: Windows + MSVC (cl)
prepare: hello.php
prepare completed: 1 source files in total
convert: hello.php
generate arginfo file: hello.php
Starting compilation for5 files
cl /c "D:\workspace\swoole-compiler-windows-x64/build\\hello.cc"
hello.cc
cl /c "D:\workspace\swoole-compiler-windows-x64/build/extension-app_hello.cc"
extension-app_hello.cc
cl /c "D:\workspace\swoole-compiler-windows-x64\phpx/src/misc/main.cc"
main.cc
cl /c "D:\workspace\swoole-compiler-windows-x64\phpx/src/misc/php_cli_process_title.c" o
php_cli_process_title.c
ps_title.c
Successfully compiled 5 files
Build successful: hello.exe

编译成功后会生成 hello.exe(不包含 PHP 源码,直接是机器指令)。

执行

代码语言:javascript
复制
D:\workspace\swoole-compiler-windows-x64>.\hello.exe

Hello Tinywan
string(6) "8.4.20"
string(51) "Windows NT TINYWAN 6.2 build 9200 (Windows 8) AMD64"
array(1) {
  [0]=>
  string(11) ".\hello.exe"
}

常见报错及解决

错误现象

代码语言:javascript
复制
Fatal error: compile failed: D:\...\build\\hello.cc
#0 [internal function]: PhpAot\Php\Translator->compile(Array)

解决方法

在编译前先初始化 Visual Studio 命令行环境

代码语言:javascript
复制
# 进入 swoole-compiler 目录
cd D:\workspace\swoole-compiler-windows-x64

# 执行 vcvars(路径根据你的 VS 安装版本调整)
call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"

**********************************************************************
** Visual Studio 2026 Developer Command Prompt v18.6.0
** Copyright (c) 2026 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'

然后再执行编译命令:

代码语言:javascript
复制
.\swoole_compiler.exe .\hello.php

推荐做法:每次新开 PowerShell 窗口都先执行 vcvars64.bat,或直接使用 Visual Studio Developer Command Prompt

注意事项

  1. 必须安装 VS2022 C++ 桌面开发组件,否则无法编译。
  2. 路径中避免中文和特殊字符。
  3. 首次编译会生成中间文件(.cc 等),后续修改 PHP 代码后需重新编译。
  4. 当前为商业软件,具体授权以官网为准。
  5. 支持生成可执行文件和动态库,适用于桌面工具、CLI 程序等场景。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-05-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源技术小栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 运行机制
  • 准备环境
    • 1. 安装 Visual Studio 2022(VS17)
    • 2. 下载 Swoole-Compiler-Windows
    • 3. 配置环境变量
  • 编译 PHP 程序
    • 示例代码 hello.php
    • 编译命令
    • 执行
  • 常见报错及解决
  • 注意事项
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档