This commit is contained in:
2021-02-26 17:58:29 +08:00
parent 81fe998fbe
commit 0f3cc0e789
2 changed files with 22 additions and 15 deletions
-15
View File
@@ -80,21 +80,6 @@ class OnTask extends Callback
return $task->finish('null data');
}
Coroutine::getContext()['isComplete'] = false;
go(function () {
$sigkill = Coroutine::waitSignal(SIGTERM | SIGKILL | SIGUSR2, -1);
var_dump($sigkill);
if ($sigkill === false) {
return;
}
while (true) {
$content = Coroutine::getContext(Coroutine::getPcid())['isComplete'];
if ($content === true) {
break;
}
}
});
$finish = $this->runTaskHandler($task->data);
Coroutine::getContext()['isComplete'] = true;
if (!$finish) {
+22
View File
@@ -10,6 +10,7 @@ use Snowflake\Abstracts\Config;
use Snowflake\Event;
use Snowflake\Exception\ConfigException;
use Snowflake\Snowflake;
use Swoole\Coroutine;
use Swoole\Server;
/**
@@ -38,12 +39,33 @@ class OnWorkerStart extends Callback
putenv('workerId=' . ($worker_id >= $server->setting['worker_num'] ? 'Task' : 'Worker') . '.' . $worker_id);
if ($worker_id >= $server->setting['worker_num']) {
fire(Event::SERVER_TASK_START);
$this->onSign();
} else {
Snowflake::setWorkerId($server->worker_pid);
$this->setWorkerAction($worker_id);
}
}
public function onSign()
{
Coroutine::getContext()['isComplete'] = false;
go(function () {
$sigkill = Coroutine::waitSignal(SIGTERM | SIGKILL | SIGUSR2, -1);
var_dump($sigkill);
if ($sigkill === false) {
return;
}
while (true) {
$content = Coroutine::getContext(Coroutine::getPcid())['isComplete'];
if ($content === true) {
break;
}
}
});
}
/**
* @param $worker_id
* @throws Exception