改名
This commit is contained in:
+113
-112
@@ -23,130 +23,131 @@ use Exception;
|
||||
class OnTask extends Callback
|
||||
{
|
||||
|
||||
/**
|
||||
* @throws Exception
|
||||
*/
|
||||
public function onHandler()
|
||||
{
|
||||
$parameter = func_get_args();
|
||||
if (func_num_args() < 4) {
|
||||
$this->onContinueTask(...$parameter);
|
||||
} else {
|
||||
$this->onTask(...$parameter);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* @throws Exception
|
||||
*/
|
||||
public function onHandler()
|
||||
{
|
||||
$parameter = func_get_args();
|
||||
if (func_num_args() < 4) {
|
||||
$this->onContinueTask(...$parameter);
|
||||
} else {
|
||||
$this->onTask(...$parameter);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param Server $server
|
||||
* @param int $task_id
|
||||
* @param int $from_id
|
||||
* @param string $data
|
||||
*
|
||||
* @return mixed
|
||||
* @throws Exception 异步任务
|
||||
*/
|
||||
public function onTask(Server $server, int $task_id, int $from_id, string $data): mixed
|
||||
{
|
||||
Snowflake::app()->increment();
|
||||
if (empty($data)) {
|
||||
return $server->finish('null data');
|
||||
}
|
||||
/**
|
||||
* @param Server $server
|
||||
* @param int $task_id
|
||||
* @param int $from_id
|
||||
* @param string $data
|
||||
*
|
||||
* @return mixed
|
||||
* @throws Exception 异步任务
|
||||
*/
|
||||
public function onTask(Server $server, int $task_id, int $from_id, string $data): mixed
|
||||
{
|
||||
if (empty($data)) {
|
||||
return $server->finish('null data');
|
||||
}
|
||||
|
||||
$time = microtime(TRUE);
|
||||
$finish = $this->runTaskHandler($data);
|
||||
if (!$finish) {
|
||||
$finish = [];
|
||||
}
|
||||
$finish['runTime'] = [
|
||||
'startTime' => $time,
|
||||
'runTime' => microtime(TRUE) - $time,
|
||||
'endTime' => microtime(TRUE),
|
||||
];
|
||||
return $server->finish(json_encode($finish));
|
||||
}
|
||||
$time = microtime(TRUE);
|
||||
$finish = $this->runTaskHandler($data);
|
||||
if (!$finish) {
|
||||
$finish = [];
|
||||
}
|
||||
$finish['runTime'] = [
|
||||
'startTime' => $time,
|
||||
'runTime' => microtime(TRUE) - $time,
|
||||
'endTime' => microtime(TRUE),
|
||||
];
|
||||
return $server->finish(json_encode($finish));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Server $server
|
||||
* @param Server\Task $task
|
||||
* @return mixed
|
||||
* @throws Exception 异步任务
|
||||
*/
|
||||
public function onContinueTask(Server $server, Server\Task $task): mixed
|
||||
{
|
||||
Snowflake::app()->increment();
|
||||
if (empty($task->data)) {
|
||||
return $task->finish('null data');
|
||||
}
|
||||
/**
|
||||
* @param Server $server
|
||||
* @param Server\Task $task
|
||||
* @return mixed
|
||||
* @throws Exception 异步任务
|
||||
*/
|
||||
public function onContinueTask(Server $server, Server\Task $task): mixed
|
||||
{
|
||||
if (empty($task->data)) {
|
||||
return $task->finish('null data');
|
||||
}
|
||||
|
||||
$time = microtime(TRUE);
|
||||
$finish = $this->runTaskHandler($task->data);
|
||||
if (!$finish) {
|
||||
$finish = [];
|
||||
}
|
||||
$finish['runTime'] = [
|
||||
'startTime' => $time,
|
||||
'runTime' => microtime(TRUE) - $time,
|
||||
'endTime' => microtime(TRUE),
|
||||
];
|
||||
return $task->finish(json_encode($finish));
|
||||
}
|
||||
$time = microtime(TRUE);
|
||||
$finish = $this->runTaskHandler($task->data);
|
||||
if (!$finish) {
|
||||
$finish = [];
|
||||
}
|
||||
$finish['runTime'] = [
|
||||
'startTime' => $time,
|
||||
'runTime' => microtime(TRUE) - $time,
|
||||
'endTime' => microtime(TRUE),
|
||||
];
|
||||
return $task->finish(json_encode($finish));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $data
|
||||
* @return array|null
|
||||
* @throws Exception
|
||||
*/
|
||||
private function runTaskHandler($data): ?array
|
||||
{
|
||||
try {
|
||||
$serialize = $this->before($data);
|
||||
$params = $serialize->getParams();
|
||||
if (is_object($params)) {
|
||||
$params = get_object_vars($params);
|
||||
}
|
||||
$finish['class'] = get_class($serialize);
|
||||
$finish['params'] = $params;
|
||||
$finish['status'] = 'success';
|
||||
$finish['info'] = $serialize->onHandler();
|
||||
} catch (\Throwable $exception) {
|
||||
$finish['status'] = 'error';
|
||||
$finish['info'] = $this->format($exception);
|
||||
$this->error($exception, 'Task');
|
||||
}
|
||||
/**
|
||||
* @param $data
|
||||
* @return array|null
|
||||
* @throws Exception
|
||||
*/
|
||||
private function runTaskHandler($data): ?array
|
||||
{
|
||||
$app = Snowflake::app()->increment();
|
||||
try {
|
||||
$serialize = $this->before($data);
|
||||
$params = $serialize->getParams();
|
||||
if (is_object($params)) {
|
||||
$params = get_object_vars($params);
|
||||
}
|
||||
$finish['class'] = get_class($serialize);
|
||||
$finish['params'] = $params;
|
||||
$finish['status'] = 'success';
|
||||
$finish['info'] = $serialize->onHandler();
|
||||
} catch (\Throwable $exception) {
|
||||
$finish['status'] = 'error';
|
||||
$finish['info'] = $this->format($exception);
|
||||
$this->error($exception, 'Task');
|
||||
} finally {
|
||||
$app->decrement();
|
||||
}
|
||||
|
||||
$event = Snowflake::app()->getEvent();
|
||||
$event->trigger(Event::SYSTEM_RESOURCE_CLEAN);
|
||||
$event = Snowflake::app()->getEvent();
|
||||
$event->trigger(Event::SYSTEM_RESOURCE_CLEAN);
|
||||
|
||||
Timer::clearAll();
|
||||
Timer::clearAll();
|
||||
|
||||
return $finish;
|
||||
}
|
||||
return $finish;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param $data
|
||||
* @return ITask|null
|
||||
*/
|
||||
protected function before($data): ?Task
|
||||
{
|
||||
if (empty($serialize = unserialize($data))) {
|
||||
return null;
|
||||
}
|
||||
if (!($serialize instanceof ITask)) {
|
||||
return null;
|
||||
}
|
||||
return $serialize;
|
||||
}
|
||||
/**
|
||||
* @param $data
|
||||
* @return ITask|null
|
||||
*/
|
||||
protected function before($data): ?Task
|
||||
{
|
||||
if (empty($serialize = unserialize($data))) {
|
||||
return null;
|
||||
}
|
||||
if (!($serialize instanceof ITask)) {
|
||||
return null;
|
||||
}
|
||||
return $serialize;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $exception
|
||||
* @return string
|
||||
*/
|
||||
private function format($exception): string
|
||||
{
|
||||
return $exception->getMessage() . " on line " . $exception->getLine() . " at file " . $exception->getFile();
|
||||
}
|
||||
/**
|
||||
* @param $exception
|
||||
* @return string
|
||||
*/
|
||||
private function format($exception): string
|
||||
{
|
||||
return $exception->getMessage() . " on line " . $exception->getLine() . " at file " . $exception->getFile();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user