diff --git a/src/confd/publish/confd.php b/src/confd/publish/confd.php index 820aab5f2..e5f9239d0 100644 --- a/src/confd/publish/confd.php +++ b/src/confd/publish/confd.php @@ -63,9 +63,14 @@ 'env_path' => BASE_PATH . '/.env', - 'interval' => 1, + // Watch on boot + 'watch' => (bool) env('CONFD_WATCH', true), + // Watch keys 'watches' => [ 'DB_HOST', ], + + // Watch interval + 'interval' => (int) env('CONFD_INTERVAL', 1), ]; diff --git a/src/confd/src/Listener/WatchOnBootListener.php b/src/confd/src/Listener/WatchOnBootListener.php index b2537b433..6d8ac7215 100644 --- a/src/confd/src/Listener/WatchOnBootListener.php +++ b/src/confd/src/Listener/WatchOnBootListener.php @@ -13,6 +13,7 @@ use FriendsOfHyperf\Confd\Confd; use FriendsOfHyperf\Confd\Traits\Logger; +use Hyperf\Contract\ConfigInterface; use Hyperf\Event\Contract\ListenerInterface; use Hyperf\Framework\Event\MainWorkerStart; use Hyperf\Server\Event\MainCoroutineServerStart; @@ -22,8 +23,10 @@ class WatchOnBootListener implements ListenerInterface { use Logger; - public function __construct(private ContainerInterface $container) - { + public function __construct( + private ContainerInterface $container, + private ConfigInterface $config + ) { $this->resolveLogger(); } @@ -40,6 +43,10 @@ public function listen(): array */ public function process(object $event): void { + if (! $this->config->get('confd.watch', true)) { + return; + } + $this->container->get(Confd::class)->watch(); $this->logger?->debug('[confd] Start watching.'); }