Swoole 4.1.0 正式版发布,支持原生 Redis/PDO/MySQLi 协程化
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Swoole 4.1.0 正式版发布,支持原生 Redis/PDO/MySQLi 协程化,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2473字,纯文字阅读大概需要4分钟。
内容图文
重大新特性
支持 Redis/PDO/MySQLi
从4.1.0
版本开始支持了对PHP
原生Redis
、PDO
、MySQLi
协程化的支持。
可使用Swoole\Runtime::enableCorotuine()
将普通的同步阻塞Redis
、PDO
、MySQLi
操作变为协程调度的异步非阻塞IO
Swoole\Runtime::enableCoroutine();
go(function () {
$redis = new redis;
$retval = $redis->connect("127.0.0.1", 6379);
var_dump($retval, $redis->getLastError());
var_dump($redis->get("key"));
var_dump($redis->set("key", "value"));
$redis->close();
});
协程跟踪
新版本增加了两个方法用于跟踪协程运行。
-
Coroutine::listCoroutines()
可遍历当前所有协程 -
Coroutine::getBackTrace($cid)
可获取某个协程的函数调用栈
function test1() {
test2();
}
function test2() {
while(true) {
co::sleep(10);
echo __FUNCTION__." \n";
}
}
$cid = go(function () {
test1();
});
go(function () use ($cid) {
while(true) {
echo "BackTrace[$cid]:\n-----------------------------------------------\n";
//返回数组,需要自行格式化输出
var_dump(co::getBackTrace($cid))."\n";
co::sleep(3);
}
});
BackTrace[1]:
-----------------------------------------------
#0 Swoole\Coroutine::sleep(10) called at [/home/htf/workspace/swoole/examples/coroutine/backtrace.php:8]
#1 test2() called at [/home/htf/workspace/swoole/examples/coroutine/backtrace.php:3]
#2 test1() called at [/home/htf/workspace/swoole/examples/coroutine/backtrace.php:14]
其他修改
- 重构
Co\Channel
C底层代码为C++, 解决复杂场景的非预期结果, 实现高稳定 - 重构
Co\Http\Client
C底层代码为C++协程模式, 解决异步时序问题, 实现高稳定 - 支持在协程和Server中使用
exit
, 此时将会抛出可捕获的\Swoole\ExitException
异常 - 移除所有迭代器(table/connection/coroutine_list)的PCRE依赖限制
- 增加
open_websocket_close_frame
配置, 可以在onMessage事件中接收close帧 - 废弃
Http\Response->gzip()
方法,改为使用http_compression
配置项。底层会自动判断客户端传入的Accept-Encoding
选择合适的压缩方法, 新增谷歌BR压缩支持 - 增加
Co\Http\Client->addData()
方法,可将内存中的数据作为上传文件内容进行发送 -
Solaris
系统支持 - Http2支持
MAX_FRAME_SIZE
分帧发送和MAX_HEADER_LIST_SIZE
处理, 客户端增加isStreamExist
方法检测是否存在对应流 -
swoole_http_response->status
增加reason
参数 - 修复MySQL prepare 中无符号参数使用了有符号值导致数值溢出的问题
- 修复HTTP2的
onRequest
回调中没有协程的问题 - 修复
tasking_num
某些特殊情况下变为-1
的问题 - 修复HTTP2-server的window-update帧构造错误
- 修复所有PHP版本下的所有级别的编译warning
- GCC版本小于4.8时将会产生编译错误
- 修复MySQL使用prepare时未使用参数绑定导致的内存分配不断增长
- 修复HTTP2重连时旧stream内存丢失泄露
底层开发相关
- 统一文件命名 #970
-
Co\Http\Client
使用了create_obj
和free_obj
保证内存安全, 防止错误的PHP代码引发内存问题
内容总结
以上是互联网集市为您收集整理的Swoole 4.1.0 正式版发布,支持原生 Redis/PDO/MySQLi 协程化全部内容,希望文章能够帮你解决Swoole 4.1.0 正式版发布,支持原生 Redis/PDO/MySQLi 协程化所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。