内容简介:Swoole 4.1 发布了,更新如下: 重大新特性 支持 Redis/PDO/MySQLi 从4.1.0版本开始支持了对PHP原生Redis、PDO、MySQLi协程化的支持。 可使用Swoole\Runtime::enableCorotuine()将普通的同步阻塞Redis、PDO、MyS...
Swoole 4.1 发布了,更新如下:
重大新特性
支持 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\ChannelC底层代码为C++, 解决复杂场景的非预期结果, 实现高稳定重构
Co\Http\ClientC底层代码为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代码引发内存问题
【声明】文章转载自:开源中国社区 [http://www.oschina.net]
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 浏览器原生支持平滑滚动
- Tiercel 2!完美支持原生级别后台下载
- cURL 7.70.0 发布,原生支持 JSON、实验性支持 MQTT
- SQL Server 2016 JSON原生支持实例说明
- Chrome 有望在 Windows 10 上支持原生通知功能
- 微软放大招?Windows 10 将加入原生虚拟机支持
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
系统程序员成长计划
李先静 / 人民邮电出版社 / 2010-04 / 45.00
在学习程序开发的过程中,你是否总是为自己遇到的一些问题头疼不已,你是否还在为写不出代码而心急如焚?作为软件开发人员,你是否时时为自己如何成为一名合格的程序员而困惑不已?没关系,本书将为你排忧解难。 这是一本介绍系统程序开发方法的书。书中结合内容详尽的代码细致讲述了不少底层程序开发基础知识,并在逐步深入的过程中介绍了一些简单实用的应用程序,最后还讲述了一些软件工程方面的内容,内容全面,语言生动......一起来看看 《系统程序员成长计划》 这本书的介绍吧!