264 lines
8.3 KiB
Batchfile
264 lines
8.3 KiB
Batchfile
@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
|