在 Swoole
官网减少了 在线运行 的按钮,能够间接运行首页提供的一些示例代码,当然也能够手动输入一些 PHP
代码进行测试。
能够拜访 Swoole 官网首页进行测试应用:https://www.swoole.com/
目前还处于测试阶段,有遇到 BUG
能够向识沃科技客服反馈或交换群中反馈。
版本阐明
在未正式公布时,对于一些新个性和性能公布过文章进行阐明,所以反复的在此就不再赘述,能够查看:
- Swoole v4.7 版本新个性预览之 Process\Pool::detach()
- Swoole v4.7 版本新个性预览之 onDisconnect 事件回调
- Swoole v4.7 版本新个性预览之 Co::cancel()
- Swoole v4.7 版本预览之反对 c-ares
- Swoole v4.7 版本新个性预览之反对为每个端口设置不同的心跳检测时间
对于其余的一些批改进行阐明:
- 禁止 Hook 曾经被 PHP 禁用的函数
在之前的版本中,如果应用disable_functions
将办法进行了禁用,在 HOOK
之后仍旧能失常调用。
如下代码:
var_dump(`ls`);Swoole\Coroutine\run(function () { var_dump(`ls`);});
保留到test.php
中,命令行应用php -d disable_functions=shell_exec test.php
执行
之前的版本输入为:
PHP Warning: shell_exec() has been disabled for security reasons in /Users/lufei/Swoole/test.php on line 3NULLstring(11) "swoole.php"
而降级 v4.7.0
之后,行为和 HOOK 前统一。
PHP Warning: shell_exec() has been disabled for security reasons in /Users/lufei/Swoole/test.php on line 3NULLPHP Warning: shell_exec() has been disabled for security reasons in /Users/lufei/Swoole/test.php on line 6NULL
Coroutine\go()
办法减少了返回值
之前的版本中应用 Coroutine\go()
办法不会返回协程 ID,从v4.7.0
中开始减少了返回值,返回以后协程 ID。
use Swoole\Coroutine\System;use function Swoole\Coroutine\run;use function Swoole\Coroutine\go;run(function () { $cid = go(function() { System::sleep(0.001); }); var_dump($cid);});
- 减少了
Cygwin
环境下的构建
从v4.7.0
版本开始,能够从 GitHub release 中获取到该版本的 Cygwin
版本压缩包进行应用。
更新日志
上面是残缺的更新日志:
新增 API
- 新增
Process\Pool::detach()
办法 (#4221) (@matyhtf) Server
反对onDisconnect
回调函数 (#4230) (@matyhtf)- 新增
Coroutine::cancel()
和Coroutine::isCanceled()
办法 (#4247) (#4249) (@matyhtf) Http\Client
反对http_compression
和body_decompression
选项 (#4299) (@matyhtf)
加强
- 反对协程 MySQL 客户端在
prepare
时字段严格类型 (#4238) (@Yurunsoft) - DNS 反对
c-ares
库 (#4275) (@matyhtf) Server
反对在多端口监听时给不同的端口配置心跳检测时间 (#4290) (@matyhtf)Server
的dispatch_mode
反对SWOOLE_DISPATCH_CO_CONN_LB
和SWOOLE_DISPATCH_CO_REQ_LB
模式 (#4318) (@matyhtf)ConnectionPool::get()
反对timeout
参数 (swoole/library#108) (@leocavalcante)- Hook Curl 反对
CURLOPT_PRIVATE
选项 (swoole/library#112) (@sy-records) - 优化
PDOStatementProxy::setFetchMode()
办法的函数申明 (swoole/library#109) (@yespire)
修复
- 修复应用线程上下文的时候,创立大量协程时抛出无奈创立线程的异样 (8ce5041) (@matyhtf)
- 修复装置 Swoole 时 php_swoole.h 头文件失落的问题 (#4239) (@sy-records)
- 修复 EVENT_HANDSHAKE 不向下兼容的问题 (#4248) (@sy-records)
- 修复 SW_LOCK_CHECK_RETURN 宏可能会调用两次函数的问题 (#4302) (@zmyWL)
- 修复
Atomic\Long
在 M1 芯片下的问题 (e6fae2e) (@matyhtf) - 修复
Coroutine\go()
失落返回值的问题 (swoole/library@1ed49db) (@matyhtf) - 修复
StringObject
返回值类型问题 (swoole/library#111) (swoole/library#113) (@leocavalcante) (@sy-records)
内核
- 禁止 Hook 曾经被 PHP 禁用的函数 (#4283) (@twose)
测试
- 新增
Cygwin
环境下的构建 (#4222) (@sy-records) - 新增
alpine 3.13
和3.14
的编译测试 (#4309) (@limingxinleo)