首页 > 编程语言 >用php 循环写一个并发请求

用php 循环写一个并发请求

时间:2023-09-01 17:12:34浏览次数:30  
标签:请求 查看 并发 点击 循环 php

点击查看代码
<?php
// 要测试的接口 URL
$apiUrl = 'https://example.com/api';

// 并发请求数
$concurrentRequests = 10;

// 创建 cURL 多个句柄
$curlHandles = [];
for ($i = 0; $i < $concurrentRequests; $i++) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $apiUrl);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    // 在这里可以设置其他 cURL 选项,如请求方法、请求头等
    $curlHandles[] = $ch;
}

// 创建 cURL 多个句柄的批处理
$multiHandle = curl_multi_init();
foreach ($curlHandles as $ch) {
    curl_multi_add_handle($multiHandle, $ch);
}

// 执行并发请求
$active = null;
do {
    $mrc = curl_multi_exec($multiHandle, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);

while ($active && $mrc == CURLM_OK) {
    if (curl_multi_select($multiHandle) != -1) {
        do {
            $mrc = curl_multi_exec($multiHandle, $active);
        } while ($mrc == CURLM_CALL_MULTI_PERFORM);
    }
}

// 获取响应并处理
$responses = [];
foreach ($curlHandles as $ch) {
    $responses[] = curl_multi_getcontent($ch);
    curl_multi_remove_handle($multiHandle, $ch);
}
curl_multi_close($multiHandle);

// 处理响应数据,可以输出或记录
foreach ($responses as $response) {
    // 处理响应数据的逻辑
    // 例如,您可以在这里检查响应是否满足预期的条件,记录响应时间等
    echo $response;
}

// 注意:这只是一个简单的示例,您可能需要根据实际需要进行调整和优化。
?>

标签:请求,查看,并发,点击,循环,php
From: https://www.cnblogs.com/panhan/p/17672422.html

相关文章

  • Android并发编程高级面试题汇总(含详细解析 十五)
    Android并发编程高级面试题汇总最全最细面试题讲解持续更新中......
  • MVCC多版本并发控制
    MVCC定义1、MVCC简介MVCC,全称Multi-VersionConcurrencyControl,即多版本井发控制,MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。MVCC在MysQLInnoDB中的实现主要是为了提高数据库并发性能,用更好的方式去处理读写冲突。做......
  • php所有函数总结
    PHP常用函数总结数学函数1.abs():求绝对值$abs=abs(-4.2);//4.2数字绝对值数字2.ceil():进一法取整echoceil(9.999);//10浮点数进一取整3.floor():舍去法取整   echofloor(9.999);//9浮点数直接舍去小数部分4.fmod():浮点数取余$x=5.7;......
  • c++并发编程实战-第2章 线程管控-读书笔记
    线程的基本管控每个应用程序都至少拥有一个线程,即运行main函数的线程,称为主线程,它由c++运行时系统启动。我们可以在软件运行中产生其他线程,它们以指定的函数作为入口函数。当main函数返回后,程序会退出;同样,当入口函数返回后,与之对应的线程结束。发起线程线程是通过构造std::thre......
  • php常用数据效验及处理
    经常会用到一些数据验证效验的东西,有些结果是“真是没想到”,总结记录下浮点数var_dump((float)'',(float)'dd4.5',(float)'4.5dd',(float)'4.5');float(0)float(0)float(4.5)float(4.5)var_dump((float)'5.80',(float)5.800,floatval('5......
  • flask + gevent + multiprocess + wsgi实现高并发接口
    Flask+多进程+协程了。8核虚拟机最高QPS高达1W5。使用的时候务必注意一下“”“进程“”“安全就行了。参考代码如下,Flaskgevent多进程WSGI(非gunicorn)#coding:utf-8#codebyhttps://cpp.la,2020-04-20#flask+gevent+multiprocess+wsgifromflaskimpo......
  • Java并发编程:volatile关键字解析
    Java并发编程:volatile关键字解析volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java5之后,volatile关键字才得以重获生机。volatile关键字虽然从字面上理解起来比较简单,但是......
  • 根据当天日期,获取未来多个月份的今天(包含2月份日期不足处理逻辑)----PHP
    publicfunctionnext_month_today($date){//获取今天是一个月中的第多少天$current_month_t=date("t",strtotime($date));$current_month_d=date("d",strtotime($date));$current_month_m=date("m",strtotime($date));//获取下个月最后......
  • centos里phpstudy报错
    出现Addressalreadyinuse:AH00072:make_sock:couldnotbindtoaddress[::]:8报错,说明80端口被占用可以寻找到80端口使用的程序并关闭。但是我当时查看线程和端口的时候没有找到。这台虚拟机之前安装过apache,所以systemctlstophttpd解决。......
  • Oracle EBS查看请求日志报404 not found错误,FNDWRR.exe资源访问不存在
    问题描述如上图中,查看请求时,点击“查看日志”按钮后,正常浏览器会打开一个页面,可以看到这个请求的日志,但出现问题后,浏览器会报404错误,如下图解决方法cd$EBS_ORACLE_HOME/common/scripts实际目录:(/oracle/PROD/fs1/FMW_Home/Oracle_EBS-app1/common/scripts)请根据自己的目......