# 环境要求
## Windows用户
Windows用户只能使用windows版本的Workerman(```Workerman-for-win```)。
1、需要PHP>=5.3.3,并配置好PHP的环境变量。
2、Windows版本的Workerman不依赖任何扩展。
3、安装使用以及注意事项参见[**这里**](http://www.workerman.net/windows)。
``` ====本页面以下只适用于Linux用户,Windows用户请忽略。 ====```
## Linux用户(含Mac OS)
Linux用户只能使用Linux版本的Workerman。
1、安装PHP>=5.3.3,并安装了pcntl、posix扩展
2、建议安装event或者libevent扩展,但不是必须的(注意event扩展需要PHP>=5.4)
### Linux环境检查脚本
Linux用户可以运行以下脚本检查本地环境是否满足WorkerMan要求
```curl -Ss <http://www.workerman.net/check.php> | php```
如果脚本中全部提示ok,则代表满足WorkerMan运行环境
(注意:检测脚本中没有检测event扩展或者libevent扩展,如果并发连接数大于1024建议安装event扩展或者libevent扩展,安装方法参见下一节)
## 详细说明
### 关于PHP-CLI
WorkerMan是基于[PHP命令行(PHP-CLI)](http://php.net/manual/zh/features.commandline.php)模式运行的。PHP-CLI与PHP-FPM或者Apache的MOD-PHP是独立的可执行程序,它们之间并不冲突也不会有相互依赖,完全独立。
### 关于WorkerMan依赖的扩展
1、[pcntl扩展](http://cn2.php.net/manual/zh/book.pcntl.php)
pcntl扩展是PHP在Linux环境下进程控制的重要扩展,WorkerMan用到了其[进程创建](http://cn2.php.net/manual/zh/function.pcntl-fork.php)、[信号控制](http://cn2.php.net/manual/zh/function.pcntl-signal.php)、[定时器](http://cn2.php.net/manual/zh/function.pcntl-alarm.php)、[进程状态监控](http://cn2.php.net/manual/zh/function.pcntl-waitpid.php)等特性。此扩展win平台不支持。
2、[posix扩展](http://cn2.php.net/manual/zh/book.posix.php)
posix扩展使得PHP在Linux环境可以调用系统通过[POSIX标准](http://baike.baidu.com/view/209573.htm)提供的接口。WorkerMan主要使用了其相关的接口实现了守护进程化、用户组控制等功能。此扩展win平台不支持。
3、[libevent扩展](http://cn2.php.net/manual/en/book.libevent.php) 或者 [Event扩展](http://php.net/manual/zh/book.event.php)
libevent扩展(或者event扩展)使得PHP可以使用系统[Epoll](http://baike.baidu.com/view/1385104.htm)、Kqueue等高级事件处理机制,能够显著提高WorkerMan在高并发连接时CPU利用率。在高并发长连接相关应用中非常重要。libevent扩展(或者event扩展)不是必须的,如果没安装,则默认使用PHP原生Select事件处理机制。
## 如何安装扩展
参见 [附录-安装扩展](315304) 章节
**备注**
* PHP>=5.4
* swoole-worker只依赖posix扩展和swoole扩展
* 不支持window操作系统,windows下可以使用CygWin,BashOnWindows,DockerOnWindows
详见<https://wiki.swoole.com/wiki/page/7.html>
- 序言
- 原理
- 开发必读
- 入门指引
- 特性
- 简单的开发示例
- 安装
- 环境要求
- 下载安装
- 启动停止
- 开发流程
- 开发前必读
- 目录结构
- 开发规范
- 基本流程
- 通讯协议
- 通讯协议作用
- 定制通讯协议
- 一些例子
- 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协议
- 不支持的函数/特性
- 版权信息