Ai_GirlFriend/启动项目_改进版.bat
2026-02-04 19:26:08 +08:00

264 lines
8.3 KiB
Batchfile
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@echo off
chcp 65001 >nul
title AI 女友项目 - 启动服务 (改进版)
REM ==========================================
REM 配置区域
REM ==========================================
set PHP_PATH=D:\2_part\php-8.0.0-Win32-vs16-x64\php.exe
set PHP_PORT=30100
set PYTHON_PORT=30101
REM ==========================================
REM 检查 MySQL 是否运行
REM ==========================================
cls
echo.
echo ╔════════════════════════════════════╗
echo ║ AI 女友项目 - 启动服务 ║
echo ╚════════════════════════════════════╝
echo.
echo [检查] 正在检查 MySQL 服务...
netstat -ano | findstr :3306 >nul 2>&1
if errorlevel 1 (
echo [警告] MySQL 服务未运行(端口 3306 未监听)
echo.
echo 请先启动 MySQL 服务,否则 PHP 应用可能无法正常工作
echo.
set /p CONTINUE=是否继续启动?(Y/N):
if /i not "!CONTINUE!"=="Y" (
echo.
echo 已取消启动
pause
exit /b 1
)
) else (
echo [成功] MySQL 服务正在运行
)
echo.
REM ==========================================
REM 清理旧的服务进程
REM ==========================================
echo [清理] 正在检查并清理旧的服务进程...
echo.
REM 查找占用 30100 端口的进程并终止
echo [清理] 检查端口 30100...
for /f "tokens=5" %%a in ('netstat -ano ^| findstr :30100 2^>nul') do (
echo [清理] 终止进程 PID: %%a
taskkill /F /PID %%a >nul 2>&1
)
REM 查找占用 30101 端口的进程并终止
echo [清理] 检查端口 30101...
for /f "tokens=5" %%a in ('netstat -ano ^| findstr :30101 2^>nul') do (
echo [清理] 终止进程 PID: %%a
taskkill /F /PID %%a >nul 2>&1
)
echo.
echo [成功] 端口清理完成
echo.
REM 等待端口完全释放
echo [等待] 等待端口释放3秒...
timeout /t 3 >nul
echo.
REM ==========================================
REM 检查 PHP
REM ==========================================
echo [检查] 正在检查 PHP...
if not exist "%PHP_PATH%" (
echo [错误] PHP 未找到: %PHP_PATH%
echo.
echo 请修改脚本中的 PHP_PATH 变量
echo.
pause
exit /b 1
)
"%PHP_PATH%" -v >nul 2>&1
if errorlevel 1 (
echo [错误] PHP 无法运行
pause
exit /b 1
)
echo [成功] PHP 已就绪
echo.
REM ==========================================
REM 检查 Python
REM ==========================================
echo [检查] 正在检查 Python...
python --version >nul 2>&1
if errorlevel 1 (
echo [错误] Python 未找到或未添加到 PATH
echo.
pause
exit /b 1
)
echo [成功] Python 已就绪
echo.
REM ==========================================
REM 检查项目目录
REM ==========================================
echo [检查] 正在检查项目目录...
if not exist "%~dp0xunifriend_RaeeC\public" (
echo [错误] PHP 项目目录未找到
pause
exit /b 1
)
if not exist "%~dp0lover" (
echo [错误] Python 项目目录未找到
pause
exit /b 1
)
echo [成功] 项目目录已就绪
echo.
REM ==========================================
REM 获取本机 IP
REM ==========================================
for /f "tokens=2 delims=:" %%a in ('ipconfig ^| findstr /C:"IPv4"') do (
set LOCAL_IP=%%a
goto :IP_FOUND
)
:IP_FOUND
set LOCAL_IP=%LOCAL_IP: =%
REM ==========================================
REM 显示启动信息
REM ==========================================
cls
echo.
echo ╔════════════════════════════════════╗
echo ║ AI 女友项目 - 启动服务 ║
echo ╚════════════════════════════════════╝
echo.
echo 准备启动以下服务:
echo.
echo [PHP 服务器]
echo → 端口: %PHP_PORT%
echo → 本地: http://127.0.0.1:%PHP_PORT%
echo → 测试: http://127.0.0.1:%PHP_PORT%/test_api.php
echo → 局域网: http://%LOCAL_IP%:%PHP_PORT%
echo.
echo [Python 后端]
echo → 端口: %PYTHON_PORT%
echo → 本地: http://127.0.0.1:%PYTHON_PORT%
echo → 局域网: http://%LOCAL_IP%:%PYTHON_PORT%
echo.
echo ────────────────────────────────────
echo.
echo 按任意键开始启动...
pause >nul
REM ==========================================
REM 启动 PHP 服务器(使用 router.php
REM ==========================================
cls
echo.
echo [1/2] 启动 PHP 服务器...
echo.
start "PHP 服务器 - 端口 %PHP_PORT%" cmd /k "title PHP 服务器 - 端口 %PHP_PORT% && cd /d "%~dp0xunifriend_RaeeC\public" && echo [PHP 服务器] 正在启动... && echo [PHP 服务器] 端口: %PHP_PORT% && echo [PHP 服务器] 访问: http://127.0.0.1:%PHP_PORT% && echo [PHP 服务器] 测试: http://127.0.0.1:%PHP_PORT%/test_api.php && echo. && "%PHP_PATH%" -S 0.0.0.0:%PHP_PORT% router.php"
echo [成功] PHP 服务器已启动
echo.
REM 等待 5 秒让 PHP 完全启动
echo 等待 PHP 服务器启动5秒...
timeout /t 5 >nul
REM ==========================================
REM 测试 PHP 服务器
REM ==========================================
echo.
echo [测试] 正在测试 PHP 服务器...
echo.
powershell -Command "try { $response = Invoke-WebRequest -Uri 'http://127.0.0.1:%PHP_PORT%/test_api.php' -TimeoutSec 5; if ($response.StatusCode -eq 200) { Write-Host '[成功] PHP 服务器响应正常' -ForegroundColor Green } else { Write-Host '[警告] PHP 服务器响应异常' -ForegroundColor Yellow } } catch { Write-Host '[错误] PHP 服务器无响应' -ForegroundColor Red; Write-Host $_.Exception.Message -ForegroundColor Red }"
echo.
set /p CONTINUE_PYTHON=PHP 服务器已启动,是否继续启动 Python 后端?(Y/N):
if /i not "%CONTINUE_PYTHON%"=="Y" (
echo.
echo 已取消 Python 后端启动
echo.
echo 按任意键退出...
pause >nul
exit /b 0
)
REM ==========================================
REM 启动 Python 后端
REM ==========================================
echo.
echo [2/2] 启动 Python 后端...
echo.
start "Python 后端 - 端口 %PYTHON_PORT%" cmd /k "title Python 后端 - 端口 %PYTHON_PORT% && cd /d "%~dp0" && echo [Python 后端] 正在启动... && echo [Python 后端] 端口: %PYTHON_PORT% && echo [Python 后端] 访问: http://127.0.0.1:%PYTHON_PORT% && echo [Python 后端] API 文档: http://127.0.0.1:%PYTHON_PORT%/docs && echo. && python -m uvicorn lover.main:app --host 0.0.0.0 --port %PYTHON_PORT% --reload"
echo [成功] Python 后端已启动
echo.
REM 等待 3 秒让 Python 完全启动
echo 等待 Python 后端启动3秒...
timeout /t 3 >nul
REM ==========================================
REM 显示完成信息
REM ==========================================
cls
echo.
echo ╔════════════════════════════════════╗
echo ║ 启动成功! ║
echo ╚════════════════════════════════════╝
echo.
echo [PHP 服务器] ✓ 已启动
echo → http://127.0.0.1:%PHP_PORT%
echo → http://127.0.0.1:%PHP_PORT%/test_api.php (测试)
echo → http://127.0.0.1:%PHP_PORT%/admin
echo → http://%LOCAL_IP%:%PHP_PORT%
echo.
echo [Python 后端] ✓ 已启动
echo → http://127.0.0.1:%PYTHON_PORT%
echo → http://127.0.0.1:%PYTHON_PORT%/docs
echo → http://%LOCAL_IP%:%PYTHON_PORT%
echo.
echo ────────────────────────────────────
echo.
echo 提示:
echo • 两个服务已在独立窗口中启动
echo • 可以在窗口中查看运行日志
echo • 关闭对应窗口可停止服务
echo • 如果 PHP API 超时,请检查 MySQL 是否运行
echo.
echo 按任意键打开浏览器测试...
pause >nul
REM ==========================================
REM 打开浏览器测试
REM ==========================================
start http://127.0.0.1:%PHP_PORT%/test_api.php
timeout /t 1 >nul
start http://127.0.0.1:%PYTHON_PORT%/docs
echo.
echo 浏览器已打开!
echo.
echo 按任意键退出(不影响服务运行)...
pause >nul
exit