Files
kiri-core/kiri-task/AsyncTaskExecute.php
T

43 lines
798 B
PHP
Raw Normal View History

2022-01-17 18:45:00 +08:00
<?php
namespace Kiri\Task;
use Exception;
use Kiri;
use Kiri\Abstracts\Component;
use Kiri\Server\SwooleServerInterface;
2022-01-18 10:18:13 +08:00
use Swoole\Coroutine;
2022-01-17 18:45:00 +08:00
/**
*
*/
class AsyncTaskExecute extends Component
{
use TaskResolve;
/**
* @param OnTaskInterface|string $handler
* @param array $params
* @param int $workerId
* @throws Exception
*/
public function execute(OnTaskInterface|string $handler, array $params = [], int $workerId = -1)
{
2022-01-18 10:18:13 +08:00
if (is_string($handler)) {
$handler = $this->handle($handler, $params);
}
2022-01-17 18:45:00 +08:00
$server = Kiri::getDi()->get(SwooleServerInterface::class);
if ($workerId < 0 || $workerId > $server->setting['task_worker_num']) {
$workerId = random_int(0, $server->setting['task_worker_num'] - 1);
}
$server->task(serialize($handler), $workerId);
}
}