Skip to content

Commit eb85358

Browse files
authored
Merge pull request #54 from NathanFreeman/docs/coro
优化安装文档和事件机制说明
2 parents b801f61 + e71b6a4 commit eb85358

File tree

2 files changed

+31
-9
lines changed

2 files changed

+31
-9
lines changed

public/zh-cn/environment.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,20 @@ pecl install -D 'enable-sockets="no" enable-openssl="yes" enable-http2="yes" ena
8585
pecl install --configureoptions 'enable-sockets="no" enable-openssl="yes" enable-http2="yes" enable-mysqlnd="yes" enable-swoole-json="no" enable-swoole-curl="yes" enable-cares="yes"' swoole
8686
```
8787

88+
## PIE
89+
90+
Swoole 项目支持由 PHP 全新的扩展安装工具 PIE 一键下载安装。
91+
92+
```shell
93+
pie install swoole/swoole:5.1.5
94+
```
95+
96+
通过 PIE 安装 Swoole 时,在安装过程中它会询问是否要启用某些功能,这也可以在运行安装之前提供,例如:
97+
98+
```shell
99+
pie install swoole/swoole:5.1.5 --enable-socket --enable-swoole-curl
100+
```
101+
88102
## 添加Swoole到php.ini
89103

90104
最后,编译安装成功后,修改`php.ini`加入
@@ -232,6 +246,13 @@ with-swoole-odbc="unixODBC,/usr"
232246
2. 使用`--privileged`参数来运行容器
233247
3. 运行时增加`--security-opt seccomp:unconfined`参数,允许`docker`容器使用`io_uring`特性
234248

249+
250+
#### --enable-zstd
251+
252+
添加这个编译选项后,`http`服务端和客户端之间可以使用高性能压缩工具`Zstd`压缩响应。
253+
254+
>`v6.0`版本后可用,而且需要安装`libzstd`依赖来支持此特性。
255+
235256
### 特殊参数
236257

237258
!> **如无历史原因不建议启用**

public/zh-cn/event.md

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Event
22

3-
`Swoole`扩展还提供了直接操作底层`epoll/kqueue`事件循环的接口。可将其他扩展创建的`socket``PHP`代码中`stream/socket`扩展创建的`socket`等加入到`Swoole`[EventLoop](/learn?id=什么是eventloop)中,
3+
`Swoole`扩展还提供了直接操作底层`epoll/kqueue/poll/select`事件循环的接口。可将其他扩展创建的`socket``PHP`代码中`stream/socket`扩展创建的`socket`等加入到`Swoole`[EventLoop](/learn?id=什么是eventloop)中,
44
否则第三方的$fd如果是同步IO会导致Swoole的EventLoop得不到执行,[参考案例](/learn?id=同步io转换成异步io)
55

66
!> `Event`模块比较底层,是`epoll`的初级封装,使用者最好有IO多路复用编程经验。
@@ -41,9 +41,9 @@ Swoole\Event::add(mixed $sock, callable $read_callback, callable $write_callback
4141
* **其它值**:无
4242

4343
* **`int $flags`**
44-
* **功能**:事件类型的掩码【可选择关闭/开启可读可写事件,如`SWOOLE_EVENT_READ``SWOOLE_EVENT_WRITE`或者`SWOOLE_EVENT_READ|SWOOLE_EVENT_WRITE`
44+
* **功能**:事件类型的掩码
4545
* **默认值**:无
46-
* **其它值**
46+
* **其它值**`SWOOLE_EVENT_READ`监听可读事件,`SWOOLE_EVENT_WRITE`监听可写事件,`SWOOLE_EVENT_READ|SWOOLE_EVENT_WRITE`同时监听可读可写事件
4747

4848
* **$sock 4种类型**
4949

@@ -58,7 +58,7 @@ object | `Swoole\Process`或`Swoole\Client`,底层自动转换为[UnixSocket](
5858

5959
* 添加事件监听成功成功返回`true`
6060
* 添加失败返回`false`,请使用`swoole_last_error`获取错误码
61-
* 已添加过的`socket`不能重复添加,可以使用`swoole_event_set`修改`socket`对应的回调函数和事件类型
61+
* 已添加过的`socket`不能重复添加,重复添加同一个`socket`会抛出错误。可以使用`swoole_event_set`修改`socket`对应的回调函数和事件类型
6262

6363
!> 使用`Swoole\Event::add``socket`加入到事件监听后,底层会自动将该`socket`设置为非阻塞模式
6464

@@ -95,9 +95,10 @@ Swoole\Event::set($fd, mixed $read_callback, mixed $write_callback, int $flags):
9595
* **参数**
9696

9797
* 参数与[Event::add](/event?id=add)完全相同。如果传入`$fd`[EventLoop](/learn?id=什么是eventloop)中不存在返回`false`
98-
*`$read_callback`不为`null`时,将修改可读事件回调函数为指定的函数
99-
*`$write_callback`不为`null`时,将修改可写事件回调函数为指定的函数
100-
* `$flags`可关闭/开启,可写(`SWOOLE_EVENT_READ`)和可读(`SWOOLE_EVENT_WRITE`)事件的监听
98+
*`$read_callback`不为`null`时,将修改可读事件回调函数为指定的函数。
99+
*`$write_callback`不为`null`时,将修改可写事件回调函数为指定的函数。
100+
* 如果`$flags``SWOOLE_EVENT_READ`,意味着只监听可读事件,停止监听可写事件。
101+
* 如果`$flags``SWOOLE_EVENT_WRITE`,意味着只监听可写事件,停止监听可读事件。
101102

102103
!> 注意如果监听了`SWOOLE_EVENT_READ`事件,而当前并未设置`read_callback`,底层会直接返回`false`,添加失败。`SWOOLE_EVENT_WRITE`同理。
103104

@@ -198,9 +199,9 @@ Event::add($fp, function($fp) {
198199
Event::write($fp, $data);
199200
```
200201

201-
#### SOCKET缓存区已满后,Swoole的底层逻辑
202+
#### socket缓存区已满后,Swoole的底层逻辑
202203

203-
持续写入`SOCKET`如果对端读取不够快,那`SOCKET`缓存区会塞满。`Swoole`底层会将数据存到内存缓存区中,直到可写事件触发再写入`SOCKET`
204+
持续写入`socket`如果对端读取不够快,那`socket`缓存区会塞满。`Swoole`底层会将数据存到内存缓存区中,直到可写事件触发再写入`socket`
204205

205206
如果内存缓存区也被写满了,此时`Swoole`底层会抛出`pipe buffer overflow, reactor will block.`错误,并进入阻塞等待。
206207

0 commit comments

Comments
 (0)