Skip to content

Commit 914b6a0

Browse files
RussellRussell
authored andcommitted
modify: 优化 swoole 运行模式下 task 任务类执行策略
1 parent fbabd24 commit 914b6a0

2 files changed

Lines changed: 16 additions & 7 deletions

File tree

src/Http/Runtime/Swoole/EventHandler.php

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use Hi\Http\Message\FileResponse;
66
use Hi\Http\Message\Swoole\Response;
77
use Hi\Http\Runtime\EventHandler as RuntimeEventHandler;
8+
use Hi\Http\Runtime\TaskInterface;
89
use Swoole\Http\Request as SwooleRequest;
910
use Swoole\Http\Response as SwooleResponse;
1011
use Swoole\Server as SwooleServer;
@@ -63,13 +64,21 @@ public function onTask(SwooleServer $server, ServerTask $task)
6364
return false;
6465
}
6566

66-
if ($payload['delay'] > 0) {
67-
Timer::after(
68-
$payload['delay'] * 1000,
69-
fn () => (new $payload['class']($payload['data'], $server, $task->id, $task->worker_id))->execute()
70-
);
67+
/** @var TaskInterface $handler */
68+
$handler = new $payload['class']($payload['data'], $server, $task->id, $task->worker_id);
69+
70+
if ($handler instanceof TaskInterface) {
71+
$handler->handle();
7172
} else {
72-
(new $payload['class']($payload['data'], $server, $task->id, $task->worker_id))->execute();
73+
// 兼容旧业务,后续逐步移除
74+
if ($payload['delay'] > 0) {
75+
Timer::after(
76+
$payload['delay'] * 1000,
77+
fn () => $handler->execute()
78+
);
79+
} else {
80+
$handler->execute();
81+
}
7382
}
7483

7584
return true;

src/Http/Runtime/TaskInterface.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@
66

77
interface TaskInterface
88
{
9-
public function execute($data = null);
9+
public function handle();
1010
}

0 commit comments

Comments
 (0)