如何将ThinkSwoole中的多协程访问改写为长尾?

2026-04-02 03:061阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计483个文字,预计阅读时间需要2分钟。

如何将ThinkSwoole中的多协程访问改写为长尾?

前言:在网上寻找多线程或Swoole相关TP6+PHP8的内容,几乎没有实质内容,只能靠自己摸索。目前的话,自己可以用ThinkSwoole中的WaitGroup类进行协程访问,运行速度结果还不错。

前言

在网上寻找多线程,或者相关swoole关于TP6+php8,几乎没有什么内容,只能靠自己摸索,目前的话自己可以用think-swoole里有WaitGroup类可以进行协程访问,运行速度结果还不错。

运行swoole在tp项目根目录

php think swoole

其他命令不会生效,都只会产生这个,TP目前也没有出相关问题的解决办法 1.正式开始码代码 首先在控制器建一文件

如何将ThinkSwoole中的多协程访问改写为长尾?

<?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单独访问可以为一个天一个地,而且根据我请求的数据这个访问速度已经是很快的了,大家可以以上例子进行修改,可以看看效果。最后别忘了进行运行

本文共计483个文字,预计阅读时间需要2分钟。

如何将ThinkSwoole中的多协程访问改写为长尾?

前言:在网上寻找多线程或Swoole相关TP6+PHP8的内容,几乎没有实质内容,只能靠自己摸索。目前的话,自己可以用ThinkSwoole中的WaitGroup类进行协程访问,运行速度结果还不错。

前言

在网上寻找多线程,或者相关swoole关于TP6+php8,几乎没有什么内容,只能靠自己摸索,目前的话自己可以用think-swoole里有WaitGroup类可以进行协程访问,运行速度结果还不错。

运行swoole在tp项目根目录

php think swoole

其他命令不会生效,都只会产生这个,TP目前也没有出相关问题的解决办法 1.正式开始码代码 首先在控制器建一文件

如何将ThinkSwoole中的多协程访问改写为长尾?

<?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单独访问可以为一个天一个地,而且根据我请求的数据这个访问速度已经是很快的了,大家可以以上例子进行修改,可以看看效果。最后别忘了进行运行