中文在线一区二区_欧美在线综合_久久久久久综合_欧美一区二区三区视频_国产免费看_国产福利精品一区

CoroutineRunner

協程執行器 CoroutineRunner類似于Csp組件,但更加靈活,可以投遞協程任務并限制最大同時執行數、最長執行時間、成功或失敗回調

簡單示例

use co;
use EasySwoole\Component\CoroutineRunner\Runner;
use EasySwoole\Component\CoroutineRunner\Task;

$runner = new Runner(10);
$runner->setOnException(function(\Throwable  $e, $task){
    echo $e->getMessage();
    echo PHP_EOL;
});

$max = 30;
$allTask = [];
while($max>0){
    $task = new Task(function() use ($max) {
        echo $max .PHP_EOL;
        co::sleep(1);
        // 將設這是一個curl爬取任務 return 爬取結果 可以在外部獲取
        return 'ok';
    });
    $runner->addTask($task);
    $allTask[] = $task;
    $max--;
}

$runner->start(1);// 最長執行1秒  總共投遞了30個 最大并發10個 需要3秒執行完,所以會有一部分將被丟棄  看下方參數說明列表

foreach($allTask as $key => $task){
    var_dump($task->getResult());
}

參數說明

Runner構造函數

可接收兩個參數 __construct($concurrency = 64,$taskChannelSize = 1024)

  • concurrency 最大同時執行的協程數量
  • taskChannelSize 可投遞的task隊列長度

Runner->setOnException

設置異常回調 有兩個參數 (\Throwable $e, Task $task)

Runner->start

開啟已經投遞的task協程的執行,有一個參數

  • float $waitTime = 30 最長執行時間,如果超過這個時間,剩余的task協程將被丟棄,不再執行。

Task構造函數

需要一個callable參數,用于調用執行,可以在閉包內return數據,外部使用 $task->getResult()獲取

  • return 不等于 false的數據將會觸發onSuccess
  • return false 將會觸發 onFail

Task->setOnSuccess

需要一個callable參數

【非必選】 task執行完成回調

Task->setOnFail

需要一個callable參數

【非必選】 task執行失敗回調

Task->getResult

獲取call函數執行后return的數據

主站蜘蛛池模板: 欧美亚洲国产一区二区三区 | 成年人视频免费在线看 | 精品福利视频网站 | 欧美一区二区三区黄 | 色综合888| 黄网av| 久久久国产视频 | 色综合一区二区 | 亚洲精品久久久久久久久久久久久 | 成人av高清在线 | 一区二区在线不卡 | 国产精品国产精品国产专区不卡 | 亚洲视频在线观看免费 | 亚洲天堂免费在线 | 国产一区在线视频播放 | 亚洲精品一区二区三区蜜桃久 | 欧美一区视频 | 免费观看污污视频 | 久久久激情视频 | 狠狠操狠狠干 | 激情欧美一区二区免费视频 | 欧洲精品久久久久毛片完整版 | www日韩| 色噜噜狠狠狠综合曰曰曰88av | 中文字幕亚洲一区 | 九九热在线视频观看这里只有精品 | 日本午夜在线 | 中文字幕av第一页 | 狠狠久| 欧美久久久久久久久久久 | 国产精品久久久久久久午夜片 | 中文字幕av一区二区 | 综合伊人 | 天天av网 | 国产一区在线视频观看 | 成年人毛片视频 | 可以免费在线观看av的网站 | 天堂久久爱资源站www | 欧美人交a欧美精品 | 国产精品伦一区二区三级视频 | 色欧美日韩 |