热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Swoole:CSP并发编程

结果二多次运行返回的顺序不同,因为每个请求,先返回不一定,先返回,先resume,然后pop协程的方式,并行IO操作,最大执行时间取决于最长请求时间。
fa5aafbb-557b-477c-b08d-0aa1ae073dff

上菜喽~~~~

废话不多说,先上代码:

Swoole \Coroutine\Http\Client('www.zyhuadu.com', 80);
 $cli->setHeaders([
 'Host' => "www.zyhuadu.com",
 "User-Agent" => ' Chrome /49.0.2587.3',
 'Accept' => 'text/ html ,application/xhtml+xml,application/xml',
 'Accept-Encoding' => 'gzip',
 ]);
 $cli->set([ 'timeout' => 1]);
 $cli->get('/index.html');
 
 //数据进入 通道
 $chan->push(
 array(
 'index'=>0,
 ' strlen '=>strlen($cli->body),
 )
 );
 $cli-> close ();
 });
 //请求二
 go(function () use ($chan){
 $cli = new Swoole\Coroutine\Http\Client('www.zyhuadu.com', 80);
 $cli->setHeaders([
 'Host' => "www.zyhuadu.com",
 "User-Agent" => 'Chrome/49.0.2587.3',
 'Accept' => 'text/html,application/xhtml+xml,application/xml',
 'Accept-Encoding' => 'gzip',
 ]);
 $cli->set([ 'timeout' => 1]);
 $cli->get('/index.html');
 //echo $cli->body;
 $chan->push(
 array(
 'index'=>1,
 'strlen'=>strlen($cli->body),
 )
 );
 $cli->close();
 });
 //请求三
 go(function () use ($chan){
 $cli = new Swoole\Coroutine\Http\Client('www.zyhuadu.com', 80);
 $cli->setHeaders([
 'Host' => "www.zyhuadu.com",
 "User-Agent" => 'Chrome/49.0.2587.3',
 'Accept' => 'text/html,application/xhtml+xml,application/xml',
 'Accept-Encoding' => 'gzip',
 ]);
 $cli->set([ 'timeout' => 1]);
 $cli->get('/index.html');
 //echo $cli->body;
 $chan->push(
 array(
 'index'=>2,
 'strlen'=>strlen($cli->body),
 )
 );
 $cli->close();
 });
 $i = 3;
 while ($i > 0) {
 //获取 返回数据
 $data = $chan->pop();
 print_r($data);
 $i--;
 }
});
 

运行结果:

08cbbc6d878940e7a1512b4df8127c1c

结果一

多次运行:

bf6504ffb4f74bbca6823c1996f7a6e1

结果二

多次运行返回的顺序不同,因为每个请求,先返回不一定,先返回,先resume,然后pop

协程的方式,并行IO操作,最大执行时间取决于最长请求时间。

Co\Channel
  • Channel->push :当队列中有其他协程正在等待pop数据时,自动按顺序唤醒一个消费者协程。当队列已满时自动 yield 让出控制器,等待其他协程消费数据
  • Channel->pop:当队列为空时自动yield,等待其他协程生产数据。消费数据后,队列可写入新的数据,自动按顺序唤醒一个生产者协程。
7a921ebe-b673-4ed4-b7d3-e5d4defbe61c

看山非山、看水非水

115c5034552c416c8439802ab7329629

左手代码,右手诗,趣味学习新知识


推荐阅读
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 目录预备知识导包构建数据集神经网络结构训练测试精度可视化计算模型精度损失可视化输出网络结构信息训练神经网络定义参数载入数据载入神经网络结构、损失及优化训练及测试损失、精度可视化qu ... [详细]
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
  • com.sun.javadoc.PackageDoc.exceptions()方法的使用及代码示例 ... [详细]
  • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • 本文介绍如何使用线段树解决洛谷 P1531 我讨厌它问题,重点在于单点更新和区间查询最大值。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 本文对比了杜甫《喜晴》的两种英文翻译版本:a. Pleased with Sunny Weather 和 b. Rejoicing in Clearing Weather。a 版由 alexcwlin 翻译并经 Adam Lam 编辑,b 版则由哈佛大学的宇文所安教授 (Prof. Stephen Owen) 翻译。 ... [详细]
  • 深入解析 Lifecycle 的实现原理
    本文将详细介绍 Android Jetpack 中 Lifecycle 组件的实现原理,帮助开发者更好地理解和使用 Lifecycle,避免常见的内存泄漏问题。 ... [详细]
  • poj 3352 Road Construction ... [详细]
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • 本文提出了一种基于栈结构的高效四则运算表达式求值方法。该方法能够处理包含加、减、乘、除运算符以及十进制整数和小括号的算术表达式。通过定义和实现栈的基本操作,如入栈、出栈和判空等,算法能够准确地解析并计算输入的表达式,最终输出其计算结果。此方法不仅提高了计算效率,还增强了对复杂表达式的处理能力。 ... [详细]
author-avatar
乃_黄包11_753
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有