|
|
@@ -15,6 +15,8 @@ use SixShop\System\Event\GetCronJobsEvent;
|
|
|
use SixShop\System\ExtensionManager;
|
|
|
use think\App;
|
|
|
use think\facade\Log;
|
|
|
+use think\worker\Manager;
|
|
|
+use think\worker\Worker;
|
|
|
use Workerman\Crontab\Crontab;
|
|
|
|
|
|
use function SixShop\Core\extension_name_list;
|
|
|
@@ -57,6 +59,17 @@ class GatheringCrontabEventHook
|
|
|
};
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * think-worker 启动时注册 crontab 专用子进程
|
|
|
+ */
|
|
|
+ #[Hook('worker.init')]
|
|
|
+ public function registerCrontabWorker(Manager $manager): void
|
|
|
+ {
|
|
|
+ $manager->addWorker(function (Worker $worker) {
|
|
|
+ $this->app->event->trigger(CrontabWorkerStartEvent::class);
|
|
|
+ }, 'crontab', 1);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* @throws \ReflectionException
|
|
|
*/
|