美文网首页
Easyswoole 异步Task任务

Easyswoole 异步Task任务

作者: 骑蚂蚁上高速_jun | 来源:发表于2020-05-03 20:24 被阅读0次

EasySwoole 异步任务Task 采用独立组件实现,需要独立安装 task组件。
安装 :

composer require easyswoole/task --ignore-platform-reqs

在 easyswoole 配置

return [
       'MAIN_SERVER' => [
                'TASK'=>[
                    'workerNum'=>4,
                    'maxRunningNum'=>128,
                   'timeout'=>15
             ],
      ],
];

使用方法- 闭包使用:

在控制器使用
<?php
use EasySwoole\EasySwoole\Task\TaskManager;

class Index extends BaseController
{
    function index()
    {
        $task = TaskManager::getInstance();
        $task->async(function (){
            echo "异步调用task1\n";
        });
        $data =  $task->sync(function (){
            echo "同步调用task1\n";
            return "可以返回调用结果\n";
        });
        $this->response()->write($data);
    }
}

使用方法 - 任务模板

<?php


namespace App\Task;

use EasySwoole\Task\AbstractInterface\TaskInterface;
use Swoole\Coroutine;

class TestTask implements TaskInterface
{
    protected $data;
    //通过构造函数,传入数据,获取该次任务的数据
    public function __construct($data)
    {
        $this->data = $data;
    }

    function run(int $taskId, int $workerIndex)
    {
        Coroutine::sleep(10);
        $cid = \Co::getCid();
        var_dump("模板任务运行 {$cid}");

        //只有同步调用才能返回数据
        return "返回值:".$this->data['name'];
        // TODO: Implement run() method.
    }

    function onException(\Throwable $throwable, int $taskId, int $workerIndex)
    {
        // TODO: Implement onException() method.
    }
}
调用
<?php
/**
 * Created by PhpStorm.
 * User: Tioncico
 * Date: 2019/11/20 0020
 * Time: 10:14
 */

namespace App\HttpController;

use App\Task\TestTask;
use EasySwoole\EasySwoole\Task\TaskManager;

class Index extends BaseController
{
    function index()
    {
        $task = TaskManager::getInstance();
        $task->async(new TestTask(['name'=>xxx']));
        $data =  $task->sync(new TestTask(['name'=>'xxx']));
        $this->response()->write($data);
    }
}

相关文章

  • Easyswoole 异步Task任务

    EasySwoole 异步任务Task 采用独立组件实现,需要独立安装 task组件。安装 : 在 easyswo...

  • Event Loop浅理解

    event loop task queue中取任务 同步任务立即执行 异步任务挂起来,可以执行时放入task qu...

  • JavaScript中的异步队列

    而在JavaScript中有两种异步宏任务macro-task和微任务micro-task. 在挂起任务时,JS ...

  • c#-异步编程模型-代码示例

    异步编程,当有Task完成就执行 手动执行取消任务 超时取消任务 异步文件读写

  • 微任务与宏任务

    微任务(microtask)与宏任务(macrotask / task queue) 表示异步任务的两种分类 ht...

  • 记一次Task和WCF的特别情况

    Task .NET中异步编程的Task对象。在.NET4中,Task任务结束,如果内部产生了异常 ,当GC回收Ta...

  • Celery

    Celery 是 Distributed Task Queue 分布式任务队列。 不太理解异步任务队列,看到有人说...

  • .NET多线程(四)任务

    什么是任务? System.Threading.Tasks.Task 任务代表一个异步操作,是未来的操作 任务非常...

  • Easyswoole源码分析-11-异步任务

    1.简介 在服务启动后的任意一个地方,都可以进行异步任务的投递,为了简化异步任务的投递,框架封装了任务管理器,用于...

  • SpringBoot的三大任务

    异步任务(Async Task) 什么是异步任务:就是有多个线程来执行业务,比如,我去发一个邮件,需要等邮件发送完...

网友评论

      本文标题:Easyswoole 异步Task任务

      本文链接:https://www.haomeiwen.com/subject/bjodghtx.html