当前位置: 首页 > 后端技术 > PHP

Swoole4.1.0正式版发布,支持原生Redis-PDO-MySQLi协程

时间:2023-03-29 14:44:48 PHP

主要新特性支持Redis/PDO/MySQLi从4.1.0版本开始,支持PHP原生Redis、PDO、MySQLi协程支持。Swoole\Runtime::enableCorotuine()可以将普通的同步阻塞Redis、PDO、MySQLi操作变成异步非阻塞IOS进行协程调度。Woole\Runtime::enableCoroutine();go(function(){$redis=newredis;$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)可以得到一个协程的函数调用栈functiontest1(){test2();}functiontest2(){while(true){co::睡觉(10);回声__FUNCTION__."\n";}}$cid=go(function(){test1();});go(function()使用($cid){while(true){echo"BackTrace[$cid]:\n-----------------------------------------------\n";//返回数组,你需要自己格式化输出var_dump(co::getBackTrace($cid))."\n";co::sleep(3);}});回溯[1]:----------------------------------------------#0Swoole\Coroutine::sleep(10)在[/home/htf/workspace/swoole/examples/coroutine/backtrace.php:8]调用#1test2()在[/home/htf/workspace/swoole/examples/coroutine/backtrace.php:3]#2test1()calledat[/home/htf/workspace/swoole/examples/coroutine/backtrace.php:14]其他修改重构Co\ChannelC底层代码转C++,解决复杂场景下的意外结果,实现高稳定性将Co\Http\ClientC底层代码重构为C++协程模式,解决异步时序问题,实现高稳定性支持在协程和Servers中使用exit,此时将抛出一个可捕获的\Swoole\ExitException以删除所有迭代服务器PCRE依赖限制(table/connection/coroutine_list)增加open_websocket_close_frame配置,在onMessage事件中可以收到closeframe。Http\Response->gzip()方法被废弃,改用http_compression配置项。底层会自动判断传入的客户端Accept-Encoding选择合适的压缩方式,添加GoogleBR压缩支持并添加Co\Http\Client->addData()方法,可以将内存中的数据作为内容发送上传的文件。Solaris系统支持Http2,支持MAX_FRAME_SIZE分帧传输和MAX_HEADER_LIST_SIZE处理,客户端增加isStreamExist方法检测是否有对应的streamswoole_http_response->status增加reason参数,修复mysqlprepare中unsigned参数使用有符号值的问题导致数值溢出。修复HTTP2onRequest回调中没有协程的问题。修复某些特殊情况下改为-1的问题修复HTTP2-server的window-updateframe构造错误修复所有PHP版本下各级编译警告修复GCC版本低于4.8时编译错误修复MySQL使用prepare时未使用的参数绑定引起的内存分配不断增长。修复HTTP2重新连接时旧流内存丢失和泄漏。底层开发相关统一文件命名#970Co\Http\Client使用create_obj和free_obj保证内存安全,防止PHP代码错误导致的内存问题