Fastadmin解决异步高并发大并发阻塞超时问题

官方连接
​​​​​​https://guzzle-cn.readthedocs.io/zh_CN/latest/quickstart.html?highlight=getasync

使用guzzle 实现,需要先引用。安装请自行解决。

use GuzzleHttp\Client;
use GuzzleHttp\Promise;
    /**
     * 异步高并发请求
     */
    public function asyncRequests()
    {
        // 以下三个参数是防止客户端超时
        set_time_limit(0);
        ignore_user_abort(true);
//        fastcgi_finish_request();

        // 数据数组
        $list = [
            [
                'id' => 1,
                'name' => '张三'
            ],
            [
                'id' => 2,
                'name' => '李四'
            ],
            [
                'id' => 3,
                'name' => '王五'
            ]
        ];

        $client = new Client();
        foreach ($list as $k => $val) {
            // 创建多个请求,请求地址可以相同,也可以不同
            // $client->postAsync(); $client->getAsync();
            $promises[$k] = $client->getAsync(
                'https://ad.oceanengine.com/open_api/2/advertiser/fund/get/',
                [
                    'headers' => ['content-type' => 'application/json', 'Access-Token' => $val['accessToken']],
                    'body' => json_encode([
                        'id' => $val['id'],
                        'name' => $val['name']
                    ])
                ]
            );
        }
        // 下面代码处理并发请求,并等待所有请求完成(每个请求之间是异步的,因此效率非常高),返回一个响应数组
        $responses = Promise \unwrap($promises);

        // 处理返回值
        foreach ($responses as $k => $response) {
            $result = json_decode($response->getBody()->getContents(), true);
            echo '<pre>';
            var_dump($list[$k]['name']);
        }

    }

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

withoutfear

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值