上次给人推荐了这篇文章,关于PHP异步并行的文章,之后有人评论问这个组件能不能给fpm用,我测试了一下发现不行,于是又找到一个可以给fpm用的http请求组件.

安装很简单,就这样  composer require guzzlehttp/guzzle 进行安装一下.

然后代码示例如下:

我们先建一个文件作为一个长时间耗时的api接口,文件名api.php,代码如下:

<?php
sleep(1);
$act = isset($_GET['act']) ? $_GET['act'] : "";
echo date('Y-m-d H:i:s', time()) . " act: " . $act;
exit;

这里我们让它睡眠1秒钟,然后输出当前时间.

然后建立一个请求的文件 index.php,代码如下:

<?php
include "vendor/autoload.php";
use GuzzleHttp\Client;
use GuzzleHttp\Promise; $start = microtime(true); $client = new Client(['verify' => false]);
$promise = [];
$list = [];
foreach (range(1, 10) as $item) {
$url = "http://local.async.com/api.php?act=" . $item;
$promise[$item] = $client->postAsync($url, []);
}
$response = Promise\Utils::unwrap($promise);
foreach ($response as $key => $value) {
$list[] = (string)($value->getBody());
} $end = microtime(true);
echo (($end - $start) * 1000) . " ms<br/>";
echo "<pre>";
var_dump($list);
echo "</pre>";

这里我们还是让他发起10个请求,然后将结果放入到list数组里面存储,最后看看效果,

我们看到时间上只用了3秒钟左右,然后act的参数都有,说明请求确实到位了,然后这10个元素的请求结果时间并不是按照先后顺序执行的,是并行的,说明确实请求并行了,这样一来,在那种大数据量需要调用接口请求的时候就派上用场了.

当然了,我这是在nginx+fpm模式下的测试结果,在cli模式下效果一样的.

如图:

php 异步并行后续--兼容FPM使用的组件的更多相关文章

  1. SpringBoot:SpringCloud与SpringBoot兼容版本参(其它组件兼容情况)

    SpringCloud --- Springboot 版本兼容 SpringCloud SpringBoot Edgware.SR5 >=1.5.0.RELEASE and <=1.5.2 ...

  2. Font Awesome 完全兼容 Bootstrap 的所有组件。

    "F_FullName": "其他", "F_Icon": "glyphicon glyphicon-backward fa-lg ...

  3. Omi v1.0震撼发布 - 令人窒息的Web组件化框架

    原文链接--https://github.com/AlloyTeam/omi 写在前面 Omi框架经过几十个版本的迭代,越来越简便易用和强大. 经过周末的连续通宵加班加点,Omi v1.0版本终于问世 ...

  4. JGUI源码:Accordion兼容IE8实现(3)

    本来不考虑IE8,但是还是有部分客户用的XP,有不代表没有,尽量做一下兼容处理1.before,after,要使用:不能使用:: 2.阻止冒泡 function stopPropagation(e) ...

  5. Omi v1.0震撼发布 - 开放现代的Web组件化框架

    原文链接--https://github.com/AlloyTeam/omi 写在前面 Omi框架经过几十个版本的迭代,越来越简便易用和强大. 经过周末的连续通宵加班加点,Omi v1.0版本终于问世 ...

  6. beeshell —— 开源的 React Native 组件库

    介绍 beeshell 是一个 React Native 应用的基础组件库,基于 0.53.3 版本,提供一整套开箱即用的高质量组件,包含 JavaScript(以下简称 JS)组件和复合组件(包含 ...

  7. 基于GBT28181:SIP协议组件开发-----------第三篇SIP注册流程分析实现

    原创文章,引用请保证原文完整性,尊重作者劳动,原文地址http://www.cnblogs.com/qq1269122125/p/3941172.html,qq:1269122125. 上两章节简要的 ...

  8. 跨容器Hybrid离线组件方案

    关键词:跨容器.Hybrid.离线 摘要:今天主要讨论的是离线组件跨容器方案,想了解在线页面如何跨webview容器,可以看 http://www.cnblogs.com/yexiaochai/p/5 ...

  9. React组件中的key

    React组件中的key 一.key的作用 react中的key属性,它是一个特殊的属性,它是出现不是给开发者用的(例如你为一个组件设置key之后不能获取组件的这个key props),而是给reac ...

  10. TypeError: 无法设置未定义或 null 引用的属性“src” ——IE浏览器不兼容图片懒加载vueLazy

    异常分析: 谷歌浏览器访问正常,IE浏览器访问部分图片无法正常展示,查看控制台,输入如下错误信息: 经分析,只有使用过图片懒加载的地方图片展示才有问题,那么就应该是图片懒加载vue-lazyload这 ...

随机推荐

  1. Docker高级篇:实战Redis集群!从3主3从变为4主4从

    通过前面两篇,我们学会了三主三从的Redis集群搭建及主从容错切换迁移,随着业务增加,可能会有主从扩容的,所以,本文我们来实战主从扩容 PS本系列:<Docker学习系列>教程已经发布的内 ...

  2. c++异步回调函数引用传递空指针异常

    c++异步回调函数引用传递空指针异常 问题描述 最近使用 c++ / qt 开发的一个桌面应用,运行到一处异步执行python脚本任务的方法处报错: 进程已结束,退出代码-1073741819 (0x ...

  3. Pipeline流水线通过git拉取Jenkinsfile报错 error: RPC failed; result=22, HTTP code = 404

    Pipeline流水线通过git拉取Jenkinsfile报错 error: RPC failed; result=22, HTTP code = 404 在学习共享库时使用通过git拉取jenkin ...

  4. TypeScript – Decorator 装饰器

    前言 TypeScript 5.0 之后就可以使用正真的 JS Decorator 了, 从前 experiment 的版本依然可用, 但是不建议继续用, 因为差很远, 一起用会混乱. Decorat ...

  5. DOM – ResizeObserver

    介绍 想监听一个 element 的 size changes 就可以使用 ResizeObserver 了. 在看这一篇之前, 建议先看看 DOM & BOM – IntersectionO ...

  6. ShiftAddAug:基于乘法算子训练的最新无乘法网络方案 | CVPR'24

    不包含乘法的运算符,如移位和加法,因其与硬件的兼容性而日益受到重视.然而,采用这些运算符的神经网络(NNs)通常表现出比具有相同结构的传统NNs更低的准确性.ShiftAddAug利用成本较高的乘法来 ...

  7. 分布式执行引擎Ray-部署

    1. Ray集群 Ray 有多种部署模式,包括单机,k8s,VM等. 在单机下,可以直接用ray.init来快速启动ray的运行环境,但是如果要在多节点上执行,则必须先部署Ray Cluster. 一 ...

  8. PasteForm最佳CRUD实践,实际案例PasteTemplate详解之管理前端的代码(二)

    之前的文章说了,使用反射和ABPvNext的Dto实现用后端控制前端以实现最佳CRUD实践! 相信看过一的已经了解了这个PasteForm是如何实现的了,本文来看下具体如何实现的 表格页面的实现 打开 ...

  9. 墨天轮国产数据库沙龙 | 张晓庆:GoldenDB分布式数据库的自动安装与备份恢复

    在共同推进国产化生态发展的进程下,墨天轮正式推出"墨天轮国产数据库沙龙"系列直播活动,将定期邀请各国产数据库产品专家.掌门人,共同探讨如何达成技术"自主可控"的 ...

  10. 59 张高清大图,带你实战入门 KubeSphere DevOps

    作者:运维有术星主 KubeSphere 基于 Jenkins 的 DevOps 系统是专为 Kubernetes 中的 CI/CD 工作流设计的,它提供了一站式的解决方案,帮助开发和运维团队用非常简 ...