think-swoole当中多协程进行访问
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了think-swoole当中多协程进行访问相关的知识,希望对你有一定的参考价值。
前言
在网上寻找多线程,或者相关swoole关于TP6+php8,几乎没有什么内容,只能靠自己摸索,目前的话自己可以用think-swoole里有WaitGroup类可以进行协程访问,运行速度结果还不错。
运行swoole在tp项目根目录
php think swoole
其他命令不会生效,都只会产生这个,TP目前也没有出相关问题的解决办法 1.正式开始码代码 首先在控制器建一文件
<?php
namespace app\\controller\\v1;
use app\\BaseController;
use think\\Request;
use think\\cache\\driver\\Redis;
class Task extends BaseController
public function index()
2加入在此文件下加入协程方法
public function testXie()
echo date(Y-m-d H:i:s) . --start.. . <br/>;//开始时间
$n=8;//创建协程数目
$result = [];
$wg = new \\Swoole\\Coroutine\\WaitGroup();#此类在vender/swoole/id-helper下自己可以根据代码提示查看相关方法
for($i=0;$i<$n;$i++)
$wg->add();
go(function() use($wg, &$result,$i)
$url=rand_codes(8,all);//此方法是自己封装无法展示可自行创建固定url数组
$result[$url[$i]]=$this->task_starts(files.$i,$url[$i]);
$wg->done();
);
$wg->wait();
echo date(Y-m-d H:i:s) . --done.. . PHP_EOL;//结束时间
dump($result);
3.关于其中的tasks_starts()方法:
**public function task_starts($file_addr,$url)
$url="";//这个是我接口请求地址因为和其他语言联动
$datas[url]=$url;
$datas[file_addr]=$file_addr;
$info=curls($url,$datas);//curl请求数据
$info=json_decode($info,true);
//返回信息
if(!$info)
return "参数错";
else
return $info[data];
**
因为我访问的数据比较多,时间会稍微长点,不过相比于php单独访问可以为一个天一个地,而且根据我请求的数据这个访问速度已经是很快的了,大家可以以上例子进行修改,可以看看效果。最后别忘了进行运行
以上是关于think-swoole当中多协程进行访问的主要内容,如果未能解决你的问题,请参考以下文章