改名
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Annotation;
|
||||
|
||||
|
||||
use Exception;
|
||||
use Snowflake\Snowflake;
|
||||
|
||||
|
||||
/**
|
||||
* Class Asynchronous
|
||||
* @package Annotation
|
||||
* Task任务
|
||||
*/
|
||||
#[\Attribute(\Attribute::TARGET_CLASS)] class Asynchronous extends Attribute
|
||||
{
|
||||
|
||||
|
||||
/**
|
||||
* Asynchronous constructor.
|
||||
* @param string $name
|
||||
*/
|
||||
public function __construct(public string $name)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param array $handler
|
||||
* @return bool
|
||||
* @throws Exception
|
||||
*/
|
||||
public function execute(array $handler): bool
|
||||
{
|
||||
$async = Snowflake::app()->getAsync();
|
||||
$async->addAsync($this->name, current($handler));
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
+21
-5
@@ -17,21 +17,37 @@ class Async extends Component
|
||||
{
|
||||
|
||||
|
||||
private array $_absences = [];
|
||||
|
||||
|
||||
/**
|
||||
* @param string $class
|
||||
* @param string $name
|
||||
* @param Task $handler
|
||||
*/
|
||||
public function addAsync(string $name, Task $handler)
|
||||
{
|
||||
$this->_absences[$name] = $handler;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param string $name
|
||||
* @param array $params
|
||||
* @throws Exception
|
||||
* @throws ReflectionException
|
||||
*/
|
||||
public function dispatch(string $class, array $params)
|
||||
public function dispatch(string $name, array $params)
|
||||
{
|
||||
$server = Snowflake::app()->getSwoole();
|
||||
if (!isset($server->setting['task_worker_num']) || !class_exists($class)) {
|
||||
if (!isset($server->setting['task_worker_num'])) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!isset($this->_absences[$name])) {
|
||||
return;
|
||||
}
|
||||
|
||||
/** @var Task $class */
|
||||
$class = Snowflake::createObject($class);
|
||||
$class = $this->_absences[$name];
|
||||
$class->setParams($params);
|
||||
|
||||
$randWorkerId = random_int(0, $server->setting['task_worker_num'] - 1);
|
||||
|
||||
Reference in New Issue
Block a user