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_compressionbody_decompression 选项 (#4299) (@matyhtf)

加强

  • 反对协程 MySQL 客户端在 prepare 时字段严格类型 (#4238) (@Yurunsoft)
  • DNS 反对 c-ares 库 (#4275) (@matyhtf)
  • Server 反对在多端口监听时给不同的端口配置心跳检测时间 (#4290) (@matyhtf)
  • Serverdispatch_mode 反对 SWOOLE_DISPATCH_CO_CONN_LBSWOOLE_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.133.14 的编译测试 (#4309) (@limingxinleo)