PHP建站技术分享-从入门到精通PHP建站技术分享-从入门到精通PHP建站技术分享-从入门到精通

QQ:420220301 微信/手机:150-3210-7690
当前位置:首页 > CMS教程 > Fastadmin

针对某个API 异步高并发,解决大并发阻塞超时问题

管理员 2024-12-14
Fastadmin
22

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

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

use GuzzleHttpClient;use GuzzleHttpPromise;

上代码

set_time_limit(0);ignore_user_abort(true);fastcgi_finish_request();//以上三个参数是防止客户端超时,不加的话,自己体验吧。$client = new Client();foreach ($res['0'] as $key => $value) {    $qdata = [        'method'=> 'forwardMessage',        'chat_id'=> $value['tid'],        'from_chat_id'=> $data['2'],        'message_id'=> $data['3']    ];    //创建多个请求,请求地址可以相同,也可以不同,我的API_URL是个常量    $promises[$key] = $client->postAsync(API_URL, ['headers' => ['Content-Type' => 'application/json'], 'body' => json_encode($qdata)]);}// 下面代码处理并发请求,并等待所有请求完成(每个请求之间是异步的,因此效率非常高),返回一个响应数组$responses = Promiseunwrap($promises);//如果需要处理返回值,就这样写。foreach ($responses as $k => $response) {    $result = $response->getBody()->getContents();    // $result即接口返回的body体,{code:1,message:success,data:{}},可以使用json_decode转一下}

目前我推送48条信息,花费不足0.2秒,可以说是毫秒级了,就看服务器配置了。


希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, Fastadmin, ClassCMS, LeCMS, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。

相关推荐

扫码关注

qrcode

QQ交谈

回顶部