首页
文档
问答
捐赠
源代码
商业产品
Swoole Tracker
Swoole Plus
Swoole Compiler
Swoole 微课程
商业合作
登录
注册
EN
全部
提问
分享
讨论
建议
公告
开发框架
发表新帖
文档上一键协程化中"redis"的例子开启的是单个协程吗?
xilin693
去年
``` Co::set(['hook_flags' => SWOOLE_HOOK_TCP]); $http = new Swoole\Http\Server("0.0.0.0", 9501); $http->set(['enable_coroutine' => true]); $http->on('request', function ($request, $response) { $redis = new Redis(); $redis->connect('127.0.0.1', 6379);//此处产生协程调度,cpu切到下一个协程(下一个请求),不会阻塞进程 $redis->get('key');//此处产生协程调度,cpu切到下一个协程(下一个请求),不会阻塞进程 }); $http->start(); ``` 这个是文档上的例子,这个例子应该是没有使用多个协程吧,如果按文档上改成这样 ``` Co::set(['hook_flags' => SWOOLE_HOOK_TCP]); $http = new Swoole\Http\Server("0.0.0.0", 9501); $http->set(['enable_coroutine' => true]); $http->on('request', function ($request, $response) { Co\run(function() { for ($c = 100; $c--;) { go(function () {//创建100个协程 $redis = new Redis(); $redis->connect('127.0.0.1', 6379); $redis->get('key'); }); } }); }); $http->start(); ``` 变成开启100个协程,这样效率应该会提升很多吗?
评论
2020-04-17
鲁飞
onRequest是自动创建协程的,一次请求进来就是协程环境了。 而且一次请求你为什么要new那么多redis?
点赞
1
回复
2020-04-18
xilin693
回复
鲁飞
明白了,谢谢,意思是有几个请求就创建几个协程了吧.
点赞
0
回复
2020-04-18
xilin693
回复
鲁飞
我看网络上的说法是单协程调度,效率没有提升,第一个例子是只有单个协程,这样会比没有协程效率高吗?
点赞
0
回复
2020-06-15
方
方兴未艾
Co::set(['hook_flags' => SWOOLE_HOOK_ALL]); Co\run(function() { go(function () { $redis = new Redis(); $redis->connect('127.0.0.1', 6379); $redis->set('key',"test"); $val = $redis->get('key'); var_dump($val); }); }); redis服务已经开启了 我按照文档里面的写,为什么一直提示 Fatal error: Uncaught Error: Class 'redis' not found in /root/workspace/Swoole/io/redis.php:15
点赞
0
回复
2020-06-16
鲁飞
回复
方兴未艾
你没有装redis扩展。
点赞
0
回复