# 安裝說明
WorkerMan實際上就是一個PHP代碼包,如果你的PHP環境已經裝好,只需要把WorkerMan源代碼或者demo下載下來即可運行。
# windows用戶(必讀)
windows用戶需要使用windows版本的workerman,windows版本workerman本身**不依賴任何擴展**,只需要配置好PHP環境變量即可,**windows版本workerman安裝及注意事項參見[windows用戶必看](http://www.workerman.net/windows)。**
`===本頁面以下僅適用于Linux版本workerman,windows用戶請忽略===`
# Linux系統環境檢測
Linux系統可以使用以下腳本測試本機PHP環境是否滿足WorkerMan運行要求。
```curl -Ss <http://www.workerman.net/check.php> | php```
上面腳本如果全部顯示ok,則代表滿足WorkerMan要求,直接到[官網](http://www.workerman.net/)下載例子即可運行。
如果不是全部ok,則參考下面文檔安裝缺失的擴展即可。
(注意:檢測腳本中沒有檢測event擴展或者libevent擴展,如果業務并發連接數大于1024建議安裝event擴展或者libevent擴展,安裝方法參照下面說明)
# 已有PHP環境安裝缺失擴展
## 安裝pcntl和posix擴展:
**centos系統**
如果php是通過yum安裝的,則命令行運行 ```yum install php-process```即可安裝pcntl和posix擴展。
如果安裝失敗或者php本身不是用yum安裝的請參考手冊[附錄-安裝擴展](315304)一節中方法三源碼編譯安裝。
**debian/ubuntu/mac os系統**
參考手冊[附錄-安裝擴展](315304)一節中方法三源碼編譯安裝。
## 安裝event或者libevent擴展:
為了能支持更大的并發連接數,建議安裝event擴展或者libevent擴展(二者作用相同,二選一即可)。以Event為例,安裝方法如下:
**centos系統安裝**
1、安裝event擴展依賴的libevent-devel包,命令行運行
```php
yum install libevent-devel -y
```
2、安裝event擴展,命令行運行
(event擴展要求PHP>=5.4,PHP5.3用戶請安裝libevent擴展(libevent擴展同時支持php5.4-5.6),見本頁面底部)
```php
pecl install event
```
注意提示:```Include libevent OpenSSL support \[yes\] :``` 時輸入```no```回車,其它直接敲回車就行
如果安裝失敗請跳過以下步驟,嘗試安裝libevent擴展,見本頁面底部。
3、命令行運行(如果ini文件位置不對,可以通過運行```php --ini```找到實際加載的ini文件路徑)
```php
echo extension=event.so > /etc/php.d/30-event.ini
```
**debian/ubuntu系統安裝**
1、安裝event擴展依賴的libevent-dev包,命令行運行
```php
apt-get install libevent-dev -y
```
2、安裝event擴展,命令行運行
(注意:event擴展要求PHP>=5.4,PHP5.3用戶請安裝libevent擴展(libevent擴展同時支持php5.4-5.6),見本頁面底部)
```php
pecl install event
```
注意提示:```Include libevent OpenSSL support \[yes\] :``` 時輸入```no```回車,其它直接敲回車就行
如果安裝失敗請跳過以下步驟,嘗試安裝libevent擴展,見本頁面底部。
3、命令行運行(需要切換到root用戶。如果ini文件位置不對,可以通過運行```php --ini```找到實際加載的ini文件路徑)
```php
echo extension=event.so > /etc/php5/cli/conf.d/30-event.ini
```
### mac os 系統安裝教程
mac 系統一般作為開發機,不必安裝event擴展。
## 全新系統安裝(全新安裝PHP+擴展)
### centos系統安裝教程
1、命令行運行(此步驟包含了安裝php-cli主程序以及pcntl、posix、libevent庫及git程序)
```php
yum install php-cli php-process git gcc php-devel php-pear libevent-devel -y
```
2、安裝event擴展,命令行運行
(注意:event擴展要求PHP>=5.4,PHP5.3用戶請安裝libevent擴展(libevent擴展也支持php5.4-5.6),見本頁面底部)
```php
pecl install event
```
注意提示:```Include libevent OpenSSL support \[yes\] :``` 時輸入```no```回車,其它直接敲回車就行
如果安裝失敗請跳過以下步驟3,嘗試安裝libevent擴展,見本頁面底部。
3、命令行運行(此步驟是配置event擴展的ini配置,如果ini文件位置不對,可以通過運行```php --ini```找到實際加載的ini文件路徑)
```php
echo extension=event.so > /etc/php.d/30-event.ini
```
4、命令行運行(此步驟是通過github下載WorkerMan主程序)
```php
git clone https://github.com/walkor/Workerman
```
5、參考[入門指引--簡單開發實例部分](315113)寫入口文件運行。
或者從[官網](http://www.workerman.net/)下載打包好的demo運行。
### debian/ubuntu系統安裝教程
1、命令行運行(此步驟包含了安裝php-cli主程序、libevent庫及git程序)
```php
apt-get install php5-cli git gcc php-pear php5-dev libevent-dev -y
```
2、安裝event擴展,命令行運行
(注意:event擴展要求PHP>=5.4,PHP5.3用戶請安裝libevent擴展(libevent擴展也支持php5.4-5.6),見本頁面底部)
```php
pecl install event
```
注意提示:```Include libevent OpenSSL support \[yes\] :``` 時輸入```no```回車,其它直接敲回車就行
如果安裝失敗請跳過以下步驟3,嘗試安裝libevent擴展,見本頁面底部。
3、命令行運行(需要切換到root用戶。此步驟是配置Event擴展的ini配置,如果ini文件位置不對,可以通過運行```php --ini```找到實際加載的ini文件路徑)
```php
echo extension=event.so > /etc/php5/cli/conf.d/30-event.ini
```
4、命令行運行(此步驟是通過github下載WorkerMan主程序)
```php
git clone https://github.com/walkor/Workerman
```
5、參考[入門指引--簡單開發實例部分](315113)寫入口文件運行。
或者從[官網](http://www.workerman.net/)下載打包好的demo運行。
### mac os 系統安裝教程
**方法1:**mac系統自帶PHP Cli,但是可能缺少```pcntl```擴展。
1、參考手冊[附錄-安裝擴展](315304)一節中方法三源碼編譯安裝```pcntl```擴展。
2、參考手冊[附錄-安裝擴展](315304)一節中方法四利用phpize安裝```event```擴展(作為開發機此可省略)。
3、通過<http://www.workerman.net/download/workermanzip> 下載WorkerMan主程序,或者到[官網](http://www.workerman.net/)下載例子運行。
**方法2:**通過```brew```命令安裝php及對應擴展
1、命令行運行以下命令安裝```brew```工具(如果已經安裝過```brew```可以跳過此步驟)
```php
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```
2、命令行運行以下命令安裝```php7```
```php
brew install php70
```
3、命令行運行以下命令安裝```event```擴展
```php
brew install php70-event
```
4、到[官網](http://www.workerman.net/)下載例子運行
## Event擴展說明
[Event擴展](http://php.net/manual/zh/book.event.php)不是必須的,當業務需要支撐大于1000的并發連接時,推薦安裝Event,能夠支持巨大的并發連接。如果業務并發連接比較低,例如1000以下并發連接,則可以不用安裝。
如果無法安裝[Event擴展](http://php.net/manual/zh/book.event.php),可以用[libevent擴展](http://php.net/manual/zh/book.libevent.php)代替,注意目前libevent擴展不支持php7,php7用戶只能使用Event擴展。
### 安裝libevnet擴展方法如下:
**注意:**
1、libevnet擴展也同樣依賴libevent庫,所以首先需要安裝libevent-devel包(并非擴展)。
2、libevent擴展支持php5.3-5.6,目前還不支持php7。php7用戶請使用event擴展,php7用戶請不要裝libevent擴展,否則會出現coredump錯誤。
**centos系統**
```php
yum install libevent-devel
pecl install channel://pecl.php.net/libevent-0.1.0 //提示libevent installation [autodetect]: 時按回車
echo extension=libevent.so > /etc/php.d/libevent.ini
```
如果ini文件位置不對,可以通過運行 ```php --ini``` 找到實際加載的ini文件路徑
**debian/ubuntu系統**
```php
apt-get install libevent-dev
pecl install channel://pecl.php.net/libevent-0.1.0 //提示libevent installation [autodetect]: 時按回車
echo extension=libevent.so > /etc/php5/cli/conf.d/libevent.ini
```
如果ini文件位置不對,可以通過運行 ```php --ini``` 找到實際加載的ini文件路徑
- 序言
- 原理
- 開發必讀
- 入門指引
- 特性
- 簡單的開發示例
- 安裝
- 環境要求
- 下載安裝
- 啟動停止
- 開發流程
- 開發前必讀
- 目錄結構
- 開發規范
- 基本流程
- 通訊協議
- 通訊協議作用
- 定制通訊協議
- 一些例子
- Worker類
- 構造函數
- 屬性
- id
- count
- name
- protocol
- transport
- reusePort
- connections
- stdoutFile
- pidFile
- logFile
- user
- reloadable
- daemonize
- globalEvent
- 回調屬性
- onWorkerStart
- onWorkerReload
- onConnect
- onMessage
- onClose
- onBufferFull
- onBufferDrain
- onError
- 接口
- runAll
- stopAll
- listen
- TcpConnection類
- 屬性
- id
- protocol
- worker
- maxSendBufferSize
- defaultMaxSendBufferSize
- maxPackageSize
- 回調屬性
- onMessage
- onClose
- onBufferFull
- onBufferDrain
- onError
- 接口
- send
- getRemoteIp
- getRemotePort
- close
- destroy
- pauseRecv
- resumeRecv
- pipe
- AsyncTcpConnection類
- 構造函數
- connect
- reconnect
- transport
- Timer定時器類
- add
- del
- 定時器注意事項
- WebServer
- 調試
- 基本調試
- 查看運行狀態
- 網絡抓包
- 跟蹤系統調用
- 常用組件
- GlobalData數據共享組件
- GlobalDataServer
- GlobalDataClient
- Channel分布式通訊組件
- ChannelServer
- channelClient
- 例子-集群推送
- 例子-分組發送
- FileMonitor文件監控組件
- MySQL組件
- workerman/mysql
- swoole/mysql(異步)
- redis組件
- swoole/redis
- 異步http組件
- swoole/http-client
- 異步消息隊列組件
- react/zmq
- react/stomp
- 異步dns組件
- swoole/dns
- 常見問題
- 心跳
- 客戶端鏈接失敗原因
- 是否支持多線程
- 與其它框架整合
- 運行多個workerman
- 支持哪些協議
- 如何設置進程數
- 查看客戶端連接數
- 對象和資源的持久化
- 例子無法工作
- 啟動失敗
- 停止失敗
- 支持多少并發
- 更改代碼不生效
- 向指定客戶端發送數據
- 如何主動推送消息
- 在其它項目中推送
- 如何實現異步任務
- status里send_fail的原因
- Windows下開發Linux下部署
- 是否支持socket.io
- 終端關閉導致workerman關閉
- 與nginx apache的關系
- 禁用函數檢查
- 平滑重啟原理
- 為Flash開843端口
- 如何廣播數據
- 如何建立udp服務
- 監聽ipv6
- 關閉未認證的鏈接
- 傳輸加密-ssl/tsl
- 創建wss服務
- 創建https服務
- workerman作為客戶端
- 作為ws/wss客戶端
- PHP的幾種回調寫法
- 附錄
- Linux內核調優
- 壓力測試
- 安裝擴展
- websocket協議
- ws協議
- text協議
- frame協議
- 不支持的函數/特性
- 版權信息