|
|
@@ -62,10 +62,10 @@ class WorkerCommand extends Command
|
|
|
SixShopWorker::addWorker(
|
|
|
onWorkerStart: function (Worker $worker) {
|
|
|
pcntl_signal(SIGQUIT, function () {
|
|
|
+ Worker::safeEcho('crontab worker received SIGQUIT signal'.PHP_EOL);
|
|
|
foreach (Crontab::getAll() as $crontab) {
|
|
|
/* @var Crontab $crontab */
|
|
|
$crontab->destroy();
|
|
|
- Worker::safeEcho($crontab->getName().' destroyed'.PHP_EOL);
|
|
|
}
|
|
|
Timer::delAll();
|
|
|
Worker::stopAll();
|
|
|
@@ -96,13 +96,15 @@ class WorkerCommand extends Command
|
|
|
$tries = 3;
|
|
|
$memoryLimit = 128; // 内存上限MB
|
|
|
$queueWorker = $this->app->get(\think\queue\Worker::class);
|
|
|
-
|
|
|
+ pcntl_signal(SIGQUIT, function () use (&$shouldExit, $worker) {
|
|
|
+ Worker::safeEcho('queue worker received SIGQUIT signal'.PHP_EOL);
|
|
|
+ $shouldExit = true;
|
|
|
+ });
|
|
|
$run = function () use (&$run, &$shouldExit, $queueWorker, $connection, $queue, $delay, $sleep, $tries, $memoryLimit, $logger, $worker) {
|
|
|
if ($shouldExit) {
|
|
|
- $logger->info(sprintf("[pid:%d] 收到退出标记,停止消费调度", $worker->pid));
|
|
|
+ Worker::stopAll();
|
|
|
return;
|
|
|
}
|
|
|
-
|
|
|
try {
|
|
|
$queueWorker->runNextJob($connection, $queue, $delay, $sleep, $tries);
|
|
|
} catch (\Throwable $e) {
|
|
|
@@ -113,7 +115,7 @@ class WorkerCommand extends Command
|
|
|
$e->getTraceAsString()
|
|
|
));
|
|
|
}
|
|
|
-
|
|
|
+ pcntl_signal_dispatch();
|
|
|
$usedMb = memory_get_usage(true) / 1024 / 1024;
|
|
|
if ($usedMb > $memoryLimit) {
|
|
|
$logger->info(sprintf(
|