# Swoole 配置说明

## 概述

本文档描述了 Laravel Octane + Swoole 集成的环境变量配置。这些配置已经添加到所有环境配置文件中，支持不同环境下的优化设置。

## 环境变量配置

### 核心 Swoole 配置

| 环境变量 | 默认值 | 说明 |
|---------|--------|------|
| `OCTANE_SERVER` | `swoole` | 指定使用 Swoole 作为 Octane 服务器 |
| `OCTANE_HOST` | `0.0.0.0` | 服务器绑定的 IP 地址 |
| `OCTANE_PORT` | `8000` | 服务器监听端口 |
| `OCTANE_WORKERS` | `4` | 工作进程数量 |
| `OCTANE_TASK_WORKERS` | `2` | 任务工作进程数量 |
| `OCTANE_MAX_REQUESTS` | `500` | 工作进程处理的最大请求数 |
| `OCTANE_WATCH` | `false` | 是否启用文件监控自动重启 |
| `OCTANE_HTTPS` | `false` | 是否强制使用 HTTPS |

### 高级配置

| 环境变量 | 默认值 | 说明 |
|---------|--------|------|
| `OCTANE_GARBAGE_COLLECTION` | `50` | 垃圾回收阈值（MB） |
| `OCTANE_MAX_EXECUTION_TIME` | `30` | 最大执行时间（秒） |
| `OCTANE_CACHE_ROWS` | `1000` | Swoole 缓存表行数 |
| `OCTANE_CACHE_BYTES` | `10000` | 每行缓存字节数 |

## 不同环境的配置

### 开发环境 (.env.development)

```bash
# 开发环境优化配置
OCTANE_WORKERS=2          # 较少的工作进程
OCTANE_TASK_WORKERS=1     # 较少的任务进程
OCTANE_MAX_REQUESTS=100   # 较少的最大请求数
OCTANE_WATCH=true         # 启用文件监控
OCTANE_GARBAGE_COLLECTION=25  # 较低的垃圾回收阈值
OCTANE_MAX_EXECUTION_TIME=60  # 较长的执行时间用于调试
```

### 生产环境 (.env.production)

```bash
# 生产环境优化配置
OCTANE_WORKERS=8          # 更多的工作进程
OCTANE_TASK_WORKERS=4     # 更多的任务进程
OCTANE_MAX_REQUESTS=1000  # 更多的最大请求数
OCTANE_WATCH=false        # 禁用文件监控
OCTANE_GARBAGE_COLLECTION=100  # 较高的垃圾回收阈值
OCTANE_MAX_EXECUTION_TIME=30   # 标准执行时间
```

## 性能调优建议

### 工作进程数量

- **开发环境**: 2-4 个进程，避免资源浪费
- **生产环境**: CPU 核心数的 1-2 倍，通常 4-8 个进程
- **高负载环境**: 可以增加到 CPU 核心数的 2-4 倍

### 最大请求数

- **开发环境**: 100-500 请求后重启，便于内存清理
- **生产环境**: 500-2000 请求后重启，平衡性能和内存使用
- **内存敏感**: 降低到 200-500，频繁重启释放内存

### 垃圾回收阈值

- **开发环境**: 25-50MB，及时清理内存
- **生产环境**: 50-100MB，减少垃圾回收频率
- **大内存服务器**: 可以设置到 200MB 以上

## 启动命令

### 基本启动

```bash
# 使用默认配置启动
php artisan octane:start

# 指定参数启动
php artisan octane:start --workers=4 --task-workers=2 --port=8000
```

### 开发模式启动

```bash
# 启用文件监控
php artisan octane:start --watch

# 指定日志级别
php artisan octane:start --log-level=debug
```

### 生产模式启动

```bash
# 生产环境启动
php artisan octane:start --workers=8 --task-workers=4 --max-requests=1000
```

## 监控和管理

### 服务器状态

```bash
# 查看服务器状态
php artisan octane:status

# 停止服务器
php artisan octane:stop

# 重启服务器
php artisan octane:restart

# 重新加载服务器（优雅重启）
php artisan octane:reload
```

### 配置验证

```bash
# 查看当前 Octane 配置
php artisan config:show octane

# 清除配置缓存
php artisan config:clear
```

## 注意事项

### 内存管理

1. **避免内存泄漏**: 确保在请求结束后清理大对象
2. **监控内存使用**: 定期检查工作进程的内存使用情况
3. **合理设置最大请求数**: 防止内存累积过多

### 开发注意事项

1. **全局变量**: 避免使用全局变量，它们会在请求间保持状态
2. **静态变量**: 小心使用静态变量，可能导致数据污染
3. **单例服务**: 确保单例服务能正确重置状态

### 生产部署

1. **进程监控**: 使用 Supervisor 或类似工具监控 Octane 进程
2. **负载均衡**: 在多服务器环境中配置负载均衡
3. **健康检查**: 实现健康检查接口监控服务状态

## 故障排除

### 常见问题

1. **端口被占用**: 检查端口是否被其他服务占用
2. **权限问题**: 确保有足够权限绑定指定端口
3. **内存不足**: 调整工作进程数量或增加服务器内存
4. **配置不生效**: 清除配置缓存后重启服务

### 调试命令

```bash
# 检查 Swoole 扩展
php -m | grep swoole

# 测试配置
php artisan octane:start --workers=1 --max-requests=1

# 查看详细日志
php artisan octane:start --log-level=debug
```

## 更新历史

- **2024-12-29**: 初始配置，添加所有环境变量支持
- 支持开发、生产环境的差异化配置
- 添加高级配置选项支持