1. 程式人生 > >Swoft 踩坑筆記十一 - Task 非同步任務

Swoft 踩坑筆記十一 - Task 非同步任務

一個類就是一個任務組,類裡面的每個方法,就是一個任務。

示例

建立 swoft/app/Tasks/DemoTask.php

<?php

namespace App\Tasks;

use Swoft\Task\Bean\Annotation\Task;

/**
 * Demo task
 *
 * @Task("demo")
 */
class DemoTask
{
    public function test(int $num)
    {
        sleep($num);
        echo '終端:每' . $num . '秒輸出一次,哦耶~' . PHP_EOL;
    }
}

@Task("demo"):定義任務名稱,名稱必須唯一。

非同步任務
在控制器中投遞任務

$result  = Task::deliver('demo', 'test', ['3'], Task::TYPE_ASYNC);

引數一:@Task 定義的
引數二:方法名
引數三:以陣列的格式傳值
引數四:指定是協程還是非同步,Task::TYPE_CO是協程,Task::TYPE_ASYNC是非同步

執行上面的程式碼十次,也就是在瀏覽器連續按F5十次。

在這裡插入圖片描述

下一篇:定時任務