## 核心需求 **将FrankenPHP + ThinkPHP应用打包成单一二进制文件,支持一行命令启动多种服务** ## 详细要求 ### 1. 打包方式 - 使用FrankenPHP的embed机制将ThinkPHP代码打包到Go二进制文件中 - 最终产出:一个独立的可执行文件,包含所有ThinkPHP代码和依赖 - 支持跨平台编译:Linux和Windows ### 2. 服务启动模式 ```bash # Linux ./frankphp serve -daemon -port 8080 # Windows frankphp.exe serve -daemon -port 8080 ``` **一行命令同时启动:** - FrankenPHP的PHP-FPM模式(HTTP服务器) - ThinkPHP应用程序(如Workerman等Worker进程) - 进入后台守护进程模式 ### 3. 命令系统支持 **系统管理命令:** - `serve` - 启动所有服务 - `stop` - 停止守护进程 - `restart` - 重启服务 - `status` - 查看运行状态 - `version` - 版本信息 - `install` - 安装为系统自动启动服务 - `uninstall` - 卸载系统自动启动服务 **ThinkPHP框架命令:** - 支持think命令:`./frankphp make:controller`, `./frankphp migrate:run` - 支持自定义命令:`./frankphp my-command --option=value` - 直接执行PHP脚本:`./frankphp php script.php` ### 4. 守护进程特性 - 后台运行 - PID文件管理 - 信号处理(SIGTERM, SIGHUP等) - 进程监控和重启机制 ### 5. 多服务并发运行 - **HTTP服务**:FrankenPHP处理ThinkPHP Web请求 - **Worker服务**:运行Workerman等长驻进程 - 所有服务在同一进程中并发运行 ### 6. 自动启动服务管理 **Linux系统:** - 生成systemd服务文件 - 支持`systemctl enable/disable` - 开机自动启动 **Windows系统:** - 注册为Windows服务 - 支持服务管理器控制 - 开机自动启动 ### 7. ThinkPHP框架集成 - 支持ThinkPHP的think命令行工具 - 兼容ThinkPHP的目录结构 - 支持ThinkPHP的配置文件 - 集成ThinkPHP的命令系统 ### 8. 技术实现细节 - 使用Go的`embed`包嵌入ThinkPHP文件 - 运行时提取文件到临时目录 - 使用goroutine并发管理多个服务 - 跨平台的服务安装/卸载实现 - 统一的日志输出和错误处理 ### 9. 部署便利性 - 单文件部署,无需PHP环境 - 跨平台编译支持(Linux/Windows) - 支持系统服务管理 - 一键安装自动启动 - 一行命令启动完整应用栈 ### 10. 使用示例 ```bash # 构建 ./build.sh # 启动服务 ./frankphp serve -daemon -port 8080 # ThinkPHP命令 ./frankphp make:controller User ./frankphp migrate:run # 安装为系统服务 sudo ./frankphp install # 卸载系统服务 sudo ./frankphp uninstall # Windows下 frankphp.exe install frankphp.exe uninstall ``` **核心价值:将ThinkPHP应用环境(HTTP服务器 + Worker进程 + 命令行工具)打包成一个跨平台的独立二进制文件,支持系统服务管理和一键部署。**