本文件将 #34 号提案社区内广泛达成一致的内容进行归纳
- 纯粹协程化
- 减少历史包袱,提升稳定性
- 降低复杂度,减少不必要的选项
- 删除 异步
Swoole\Client
、Swoole\Http\Client
、Swoole\MySQL
、Swoole\Redis
4个模块。
此条目现在仍然存疑
- 删除 同步
Swoole\Client
- 仅在
Cli
模式下启用Swoole
- 删除
onBufferEmpty
- 删除
onBufferFull
- 实现一个全新的,针对协程而设计,区别于
Swoole\Server
的
$server = Coroutine::listen('tcp://127.0.0.1:9501', ['backlog' => 128, 'ssl_key_file' => '', 'open_length_check']);
while ($conn = $server->accept()) {
// 每接收到一个请求, 就创建一个协程去并发地处理它
go (function () use ($conn) {
// 打个招呼
$conn->send(tcp_pack('Hello~'));
// 先接收TCP包头长度的数据, 解析包长数据, 再接收包长长度的主体数据
$data = $conn->recv(tcp_length($conn->recv(tcp_type_length())));
// 打包后原封不动地发回去
$conn->send(tcp_pack($data));
// 开始循环接收, 直到超时或者对方关闭了连接
while ($len = $conn->recv(tcp_type_length(), 1)) {
$data = $conn->recv($len);
echo "{$data}\n";
}
// 退出循环体就关闭了
$conn->close();
});
}
- 删除
Swoole\Serialize