PHP curl 并发最佳实践代码分享
发最佳实践代码分享本文将探讨两种具体的实现方法, 并对不同的方法做简单的性能对比. 1. 经典 发机制及其存在的问题 经典的 现机制在网上很容易找到 , 比如参考 线手册的如下实现方式: 复制代码代码如下: ${ $ ; $ ; ${ // ; // RL $ 1); 1); 0); // $ $= $} $ { $ $ } $= $ 0 } $= } } $ ; $${ $= $ $ } } 首先将所有的 入并发队列 , 然后执行并发过程, 等待所有请求接收完之后进行数据的解析等后续处理. 在实际的处理过程中, 受网络传输的影响, 部分 内容会优先于其他 回 , 但是经典 发必须等待最慢的那个 回之后才开始处理, 等待也就意味着 空闲和浪费 . 如果 列很短, 这种空闲和浪费还处在可接受的范围, 但如果队列很长, 这种等待和浪费将变得不可接受. 2. 改进的 发方式 仔细分析不难发现经典 发还存在优化的空间, 优化的方式时当某个 求完毕之后尽可能快的去处理它, 边处理边等待其他的 回, 而不是等待那个最慢的接口返回之后才开始处理等工作, 从而避免 空闲和浪费. 闲话不多说, 下面贴上具体的实现: 复制代码代码如下: ${ $ ; $ ; ${ $ ; $ 1); 1); 0); $ $$= $} $ ; ($ $ == ; $= { } // a - $ { // on ); $ ); $ ), $ $$]] = ' '; // $); ); } // is by $ 0) { } } $ } 3. 两种并发实现的性能对比 改进前后的性能对比试验在 机上进行, 测试时使用的并发队列如下 : , 每组实验重复20 次 , 在单次实验中, 给定相同的接口 合, 分别测量 经典的并发机制) 和改进后的并发机制)两种并发机制的耗时( 秒为单位), 耗时短者胜出( 并计算节省的时间( 秒为单位)以及性能提升比例(%). 为了尽量贴近真实的请求而又保持实验的简单, 在对返回结果的处理上只是做了简单的正则表达式匹配, 而没有进行其他复杂的操作. 另外, 为了确定结果处理回调对性能对比测试结果的影响, 可以使用拟现实中比较负责的数据处理逻辑(如提取, 分词, 写入文件或数据库等). 性能测试中用到的回调函数为: 复制代码代码如下: ${ (.+)/ $$ '; } 数据处理回调无延迟时: 优, 但性能提升效果不明显 . 数据处理回调延迟 5 毫秒: 胜, 性能提升 40%左右. 通过上面的性能对比, 在处理 列并发的应用场景中 该是更加的选择, 并发量非常大(1000+)时, 可以控制并发队列的最大长度 , 比如 20, 每当 1 个 回并处理完毕之后立即加入 1 个尚未请求的 队列中, 这样写出来的代码会更加健壮, 不至于并发数太大而卡死或崩溃. 详细的实现请参考: (超时)的解决办法 项列表( 超详细)关于 口问题(口主要也就是运用 析 用 交 式数据解析 展 加载的解决方法 现 例介绍)深入 数的详解解析 数的相关应用及介绍基于 法的深入分析基于 取邮箱地址的详解深入解析 使用 现 求的方法 使用 式据至 口的代码 法 函数的参数分享 造源的实例代码 通过 送邮件 本操作详解 间 新浪微博 腾讯微博 搜狐微博 人人网 开心网 百度搜藏更多 HP 制链接收藏本文打印本文关闭本文返回首页 上一篇:出数组中重名的元素的几种处理方法 下一篇:限级分类,超级简单的无限级分类,支持输出树状图 相关文章 2013析 用 交 式数据 2013013析 静态的规则 2010自 源码 2009序授权验证开发思路 2010 的使用介绍 2011承的一个应用 2010升级 过程及注意事项 2014替换字符串中的空格为逗号 '',''的方法 2007常用到的实用函数集合 文章评论 最 近 更 新 从康盛产品(提取出来的模板类邮箱正则表达式实现代码(针对 作数组的一些函数整理介绍 取网址的顶级域名函数代码 $_详细参数与说明介绍 码高亮显示+运行代码框合成 N 问题的解决方法利用 线程 模拟 并发的详解 的验证码安全码?限极分类 热 点 排 行 数使用方法 面跳转到另一个页面的多种 符串截取问题置文件详解 (配置)火车头采集器 集图文教程 现 详细的 明安装教程 和 和(换使用与 ,,