This commit is contained in:
as2252258@163.com
2021-04-24 20:17:55 +08:00
parent b55648a1ce
commit 1181fb59da
2 changed files with 30 additions and 29 deletions
+1
View File
@@ -137,6 +137,7 @@ class OnTask extends Callback
if (empty($serialize = swoole_unserialize($data))) { if (empty($serialize = swoole_unserialize($data))) {
return null; return null;
} }
$serialize = array_shift($serialize);
if (!($serialize instanceof ITask)) { if (!($serialize instanceof ITask)) {
return null; return null;
} }
+29 -29
View File
@@ -17,42 +17,42 @@ class Async extends Component
{ {
private array $_absences = []; private array $_absences = [];
/** /**
* @param string $name * @param string $name
* @param Task $handler * @param Task $handler
*/ */
public function addAsync(string $name, Task $handler) public function addAsync(string $name, Task $handler)
{ {
$this->_absences[$name] = $handler; $this->_absences[$name] = $handler;
} }
/** /**
* @param string $name * @param string $name
* @param array $params * @param array $params
* @throws Exception * @throws Exception
*/ */
public function dispatch(string $name, array $params = []) public function dispatch(string $name, array $params = [])
{ {
$server = Snowflake::app()->getSwoole(); $server = Snowflake::app()->getSwoole();
if (!isset($server->setting['task_worker_num'])) { if (!isset($server->setting['task_worker_num'])) {
return; return;
} }
if (!isset($this->_absences[$name])) { if (!isset($this->_absences[$name])) {
return; return;
} }
/** @var Task $class */ /** @var Task $class */
$class = $this->_absences[$name]; $class = $this->_absences[$name];
$class->setParams($params); $class->setParams($params);
$randWorkerId = random_int(0, $server->setting['task_worker_num'] - 1); $randWorkerId = random_int(0, $server->setting['task_worker_num'] - 1);
$server->task(swoole_serialize($class), $randWorkerId); $server->task(swoole_serialize([$class, 'onHandler']), $randWorkerId);
} }
} }