异步任务不执行,不知道为什么。

来源:7-22 播放数统计 – 高性能redis有序集合服务引入

大王今天不巡山

2019-02-28

老师您好,我在控制器中投递异步任务。返回false,看了半天没明白为什么。请求帮助!
异步任务

<?php

namespace App\Task;
use EasySwoole\EasySwoole\Swoole\Task\AbstractAsyncTask;
class Message extends AbstractAsyncTask
{
    protected function run($taskData, $taskId, $fromWorkerId, $flags = null)
    {
        // TODO: Implement run() method.
        echo "任务执行了\n";
        return true;
    }
    
    protected function finish($result, $task_id)
    {
        // TODO: Implement finish() method.
    }
}

在控制器中投递异步任务

<?php
namespace App\HttpController\Api;
use App\HttpController\Model\BannerModel;
use App\HttpController\Service\Redis;
use App\Task\Message;
use EasySwoole\EasySwoole\Swoole\Task\TaskManager;
class Banner extends Base
{
    public function banner()
    {
        $data = (new BannerModel())->getBanner();
        TaskManager::async(Message::class);
        return $this->writeJson(200, $data, 'OK');
    }  
}

控制台没有输出。有点懵,不知道为什么异步任务不执行!我的环境如下:
swoole version 4.2.13
php version 7.2.15-0ubuntu0.18.04.1
easy swoole 3.1.15

写回答

1回答

houger

2019-02-28

 将任务模版类实例化之后,再把实力对象传进异步任务 试试

0
5
大王今天不巡山
回复
houger
4.3.0-alpha
2019-03-04
共5条回复

EasySwoole+ElasticSearch打造高性能小视频服务系统

系统掌握EasySwoole框架,从容应对高并发、高性能业务

556 学习 · 235 问题

查看课程