Swoole异步操作类

简单Swoole异步列队操作

类版本:1.00
功能说明:
使用该类需安装:Swoole4扩展
63abba19995be.jpg
简单封装了服务端和客户端,列队异步操作。
平时我们需要发送邮件或者发送验证码时,或者其他耗时任务时可,使用异步执行的方式进行处理。

部署说明:
将类文件解压至Mb/tools文件夹下即可。


使用说明:
  1. 初始化__construct($c =null,$port = 9501,$host = '0.0.0.0')参数:$c =控制器,$port = 端口,$host = 主机
  2. 启动start($dest = 0,$thread = 10)参数:$dest = (0=客户端,1=服务端),$thread = 线程数
  3. 发送消息send($data)参数:$data=数据
  4. 关闭连接close()
使用演示:
服务端:接收消息来处理数据、服务端:发送消息

服务端:
class swooleController extends Mb{
	
	//__init 函数会在控制器被创建时自动运行用于初始化工作,如果您要使用它,请按照以下格式编写代码即可:
	public $swoole;
	
	public function index(){
		$this->curl = t('curl');
		$this->swoole = t('swooleAsync',$this);
		$res = $this->swoole->start();
		if($res){
		    echo '服务启动成功';
		}else{
		    echo '服务启动失败';
		}
		
	}
	
	public function __Task($task_id,$data){//此方法函数必须存在
        $dataArr = json_decode($data,true);
        var_dump($dataArr);
        $dbres = db('order_list')->where('id = ?',[$dataArr['id']])->fetch('state');
        if($dbres){
            $res = $this->curl->get('http://www.liot.cn/async/test?state='.$dbres['state']);
            echo $res."\n";
            return $res;
        }
        return "任务ID:{$task_id},执行ID不存在";
    }
	
	public function __Finish($task_id,$data){//此方法函数必须存在
        echo "异步任务ID:{$task_id} 完成: {$data}".PHP_EOL;
    }
}
客户端:
class indexController extends Mb{
    
	public function index(){
		$this->swoole = t('swooleAsync');
		$res = $this->swoole->start(1);
		if($res){
            $this->swoole->send(['id'=>rand(1,100)]);
		}
		$this->swoole->close();
		echo 'ok';
	}
	
	public function test(){
		sleep(rand(1,5));
		if(isset($_GET['state']) && $_GET['state'] == 2){
		    $this->json('成功',200);
		}$this->json('失败',201);
	}
}
启动服务端:
在根目录创建文件:swoole.php(文件名自定义)
/**
 * swoole服务入口
 * @link      http://www.ZOSphp.com
 * @copyright Copyright (c) 2022-2032 
 * @author    友易
 * @version   1.0.0
**/
//define('Z_DEBUG',TRUE); // 开启调试模式
$_GET['s'] = 'swoole/index';
include 'Mb/Mb.php';

这里以宝塔管理面板使用为例:
1、先安装进程守护管理器
2、添加守护进程
63abbb267acbc.jpg

可以通过日志查看,查看任务执行结果 
63abbe79ea15b.jpg

如果对你有帮助

可以赞助并支持下作者哦,谢谢!