首页 > 编程语言 >php 异步并行后续--兼容FPM使用的组件

php 异步并行后续--兼容FPM使用的组件

时间:2024-05-19 10:07:39浏览次数:16  
标签:请求 -- 并行 list echo FPM 组件 php

上次给人推荐了这篇文章,关于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模式下效果一样的.

如图:

标签:请求,--,并行,list,echo,FPM,组件,php
From: https://www.cnblogs.com/lizhaoyao/p/18200081

相关文章

  • 如何把多个文件(夹)随机复制到多个文件夹中
    首先,需要用到的这个工具:度娘网盘提取码:qwu2蓝奏云提取码:2r1z 先看文件的情况一共20个兔兔的图片,4个文件夹,把全部的图片随机的复制这些地方去打开工具,切换到文件批量复制版块找到右下角的设置,点击打开勾选“随机复制”,把文件进行随机的复制选中全部的兔兔图片,C......
  • CERIO-DT系列路由器Save.cgi接口存在命令执行漏洞
    漏洞描述:由于未经过过滤和适当限制的情况下,传入的参数直接用于构建并执行系统命令,攻击者通过将恶意命令注入到"Save.cgi"接口的请求参数中可以执行任意命令。Fofa:title="DT-100G-N"||title="DT-300N"||title="DT-100G"||title="AMR-3204G"||title="WMR-200N"POC:PO......
  • 从开发到部署,搭建离线私有大模型知识库
    背景介绍最近一段时间搭建了一套完整的私有大模型知识库,目前完整的服务已经完成测试部署上线。基本之前的实践过程,从工程角度整理技术方案以及中间碰到的一些问题,方便后续对这个方向有需求的研发同学们。为什么做离线私有化部署在大模型火热起来之后,很多企业都有尝试相关服务。......
  • expect3
    vimip_pass.txt192.168.40.1311234192.168.40.1321234192.168.40.1331234catssh5.exp#!/usr/bin/expectsetipaddr[lindex$argv0]setname"root"setpasswd[lindex$argv1]settimeout30spawnssh-keygenexpect{"continuec......
  • Narrative writing revision
    ThestoryIchose:Goodorbad?Thepointofviewofthestory:ThethirdpointofviewThepointofviewofmystory:Thefirstpointofview.Script:Longago,mysonandIlivedinafarawaytownneartheChineseborder.Wefarmedthelandandlivedamost......
  • FastReport Exporting to html
    https://fastreports.github.io/FastReport.Documentation/Exporting.htmlFastReportOpenSourcecansavedocumentsinHTML,BMP,PNG,JPEG,GIF,TIFF,EMF.ThefollowingisanexampleofexportingareportinJpegfile.usingFastReport;usingFastReport.Ut......
  • JS测试文章
    目录1.HOOK1.1.直接替换函数1.2.为对象的属性赋值的方式2.chrome控制台3.函数3.1.箭头函数3.2.arguments对象4.对象4.1.原型继承4.2.访问对象内的方法:4.3.对象构造器函数4.4.内建构造器4.5.内建构造器的省略写法4.6.JSON对象4.7.JSONVSXML1.HOOK原理:JS是一......
  • 自媒体基础
    自媒体:个人或者个人组织进行专业化,持续化的内容创作,并以此为盈利的方式做自媒体的原因:盈利,个人品牌打造,进行企业品牌宣传 自媒体盈利:1.平台分成    ......
  • token、cookie、session的区别
    token是验证用户身份的令牌,通常是用于接口的身份验证,一般获取之后放在请求头中cookie和session的区别:cookie是服务器发送到客户端然后存储在客户端的,可以用来保持用户的登录信息session是服务器为了方便存储用户会话信息产生的,客户端访问服务器时,服务器给每个访问对象创建一个......
  • pde复习 第一章波动方程 第四节 高维波动方程的Cauchy问题
    2024-05-1816:14:50星期六知识点梳理本节讨论的是高维波动方程,主要是计算\(\star\)公式为\(\star\)公式一定要记清,下面给出一些例题,动手计算。例题阅读顺序从左到右再下一行。评注:上面的两个例题的所有解法都值得认真看,还有里面的技巧(三角函数的周期性和正交性),特......