fastD
fastD copied to clipboard
请问如何在控制器里面投递异步任务到task进程执行?
实现dotask, dofinish可以处理任务,但是不知道如何投递,能否支持投递到指定的task类处理呢
` // 新建 HttpTaskServer class HttpTaskServer extends HTTPServer {
public function doTask(swoole_server $server, $data, $taskId, $workerId)
{
$this->dispatchJob($data);
}
/**
* @param $job
*/
protected function dispatchJob($job)
{
try {
$job->run();
} catch (Throwable $exception) {
if ($job instanceof TaskInterface) {
dispatcher()->queue($job);
}
logger()->error($exception);
}
}
}
// 新建投放task处理类
class TaskDispatcher {
public function task(TaskInterface $job)
{
if (app()->has('server')) {
server()->getSwoole()->task($job);
} else {
$this->queue($job);
}
}
public function queue(TaskInterface $job)
{
if ($job instanceof AbstractJob) {
queue()->push($job);
}
}
}
// 调度 app()->get(TaskDispatcher::class)->task( new NoticeAsync() );
`
收到,谢谢!