# server.php
服務器基礎配置
```php
/**
* 服務器設置
*/
$config['server']['send_use_task_num'] = 20;
$config['server']['set'] = [
'log_file' => LOG_DIR."/swoole.log",
'log_level' => 5,
'reactor_num' => 2, //reactor thread num
'worker_num' => 4, //worker process num
'backlog' => 128, //listen backlog
'open_tcp_nodelay' => 1,
'dispatch_mode' => 5,
'task_worker_num' => 5,
'task_max_request' => 5000,
'enable_reuse_port' => true,
'heartbeat_idle_time' => 120,//2分鐘后沒消息自動釋放連接
'heartbeat_check_interval' => 60,//1分鐘檢測一次
'max_connection' => 100000
];
//協程超時時間
$config['coroution']['timerOut'] = 5000;
//是否啟用自動reload
$config['auto_reload_enable'] = true;
//是否允許訪問Server中的Controller,如果不允許將禁止調用Server包中的Controller
$config['allow_ServerController'] = true;
```
## worker_num
開啟的worker進程數量,這里建議設置為cpu核數一致,比如你是4核那么worker_num設置為4
## task_worker_num
開啟的task進程數量,task是同步進程主要處理耗時任務,這里如果用到task請設置task進程數。
> Task是同步模式很多功能受到限制,SD3.0建議使用自定義進程實現耗時任務的執行。
## heartbeat_idle_time
心跳,這里服務器將檢測客戶端是否有消息到達,如果消息間隔超過heartbeat_idle_time設置的值,那么該客戶端將被踢下線,heartbeat_idle_time單位為秒
>如果不想檢測心跳可以刪除此配置
## heartbeat_check_interval
服務器間隔heartbeat_check_interval(單位秒)時間檢測一次心跳
>如果不想檢測心跳可以刪除此配置
## max_connection
這里set中的max_connection是設置服務器最大連接數,如果超過則會拒絕。
max_connection越大申請的內存越大,運行時可能會報錯,那么需要調整下面的參數。
ulimit -n 要調整為100000甚至更大。 命令行下執行 ulimit -n 100000即可修改。如果不能修改,需要設置 /etc/security/limits.conf,加入
```
* soft nofile 262140
* hard nofile 262140
root soft nofile 262140
root hard nofile 262140
* soft core unlimited
* hard core unlimited
root soft core unlimited
root hard core unlimited
```
注意,修改limits.conf文件后,需要重啟系統生效。
## config['coroution']['timerOut']
設置默認的協程超時時間,這里單位為毫秒。
## config['auto_reload_enable']
是否啟動自動reload功能,開啟后有代碼更新會自動reload,不需要開發者重啟服務器。
>如果沒有裝inotify擴展會導致cpu占用率極高,建議安裝inotify擴展
>線上環境不建議開啟
## allow_ServerController
是否允許訪問Server中的Controller,如果不允許將禁止調用Server包中的Controller
- SD3.X簡介
- 捐贈SD項目
- VIP服務
- 基礎篇
- 搭建環境
- 使用Composer安裝/更新SD框架
- 啟動命令
- 開發注意事項
- 框架配置
- 配置文件夾
- server.php
- ports.php
- business.php
- mysql.php
- redis.php
- timerTask.php
- log.php
- consul.php
- catCache.php
- client.php
- 自定義配置
- 框架入口
- MVC架構
- 加載器-Loader
- 控制器-Controller
- 模型-Model
- 視圖-View
- 同步任務-Task
- 封裝器
- Swoole編程指南-EOF協議
- Swoole編程指南-固定包頭協議
- 封裝器-Pack
- 路由器
- TCP相關
- 綁定UID
- Send系列
- Sub/Pub
- 獲取服務器信息
- Http相關
- HttpInput
- HttpOutput
- 默認路由規則
- WebSocket相關
- 使用SSL
- 公共函數
- 進階篇
- 內核優化
- 封裝器路由器原理剖析
- 對象池
- 上下文-Context
- 中間件
- 進程管理
- 創建自定義進程
- 進程間RPC
- 自定義進程如何使用連接池
- 異步連接池
- Redis
- Mysql
- Mqtt
- HttpClient
- Client
- AMQP
- RPC
- 日志工具-GrayLog
- 微服務-Consul
- Consul基礎
- 搭建Consul服務器
- SD中Consul配置
- 微服務
- 選舉-Leader
- Consul動態配置定時任務
- 熔斷與降級
- 集群-Cluster
- 高速緩存-CatCache
- 萬物-Actor
- Actor原型
- Actor的創建
- Actor間的通訊
- 消息派發-EventDispatcher
- 延遲隊列-TimerCallBack
- 協程
- 訂閱與發布
- MQTT簡易服務器
- AMQP異步任務調度
- 自定義命令-Console
- 調試工具Channel
- 特別注意事項
- 日常問題總結
- 實踐案例
- 物聯網自定義協議
- Actor在游戲的應用
- Mongodb以及一些同步擴展的使用
- 自定義進程使用MQTT客戶端
- 開發者工具
- SDHelper