laravel 접속 컨설팅

config/consul.php

return [
    'url'  => 'http://127.0.0.1:8500/v1/kv/',
];
filesystems.php
        'config' => [
            'driver' => 'local',
            'root' => base_path('config'),
            'url' => env('APP_URL').'/storage',
            'visibility' => 'public',
        ],

명령 줄:
namespace App\Console\Commands\Consul;

use GuzzleHttp\Client;
use Illuminate\Console\Command;

class DeamonCommand extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'ue:consul:deamon
    
    { path :    }
    ';

    protected $items = [];

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'consul     ';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }


    public function handle()
    {
        $path = trim($this->argument('path'), '/');

        $url = rtrim(config('consul.url'), '/') . '/' . $path . '/?recurse';

        $client = new Client();

        try {

            $response = $client->request('GET', $url);
            $rows = json_decode($response->getBody()->getContents(), true);

            if (count($rows) == 1) {
                return true;
            }

            $name = null;

            foreach ($rows as $key => $row) {

                if (substr($row['Key'], -1) == '/') {
                    $name = substr($row['Key'], 0, -1);
                    $this->items[$name] = [];
                    continue;
                }
                $key = trim(str_replace($name, ' ', $row['Key']), ' /');
                $this->items[$name][$key] = base64_decode($row['Value']);
            }

            $this->doSave();

        } catch (\Exception $ex) {
            $this->error($ex->getMessage());
            return true;
        }

    }

    protected function doSave()
    {
        foreach ($this->items as $path => $item) {

            if (!$item) {
                $this->error($path .' : Is Empty.');
                continue;
            }

            $item = array_map(function($row){
                if(json_decode($row)){
                    return json_decode($row, true);
                }
                return $row;
            }, $item);

            $content = [
                "put($path . '.php', implode("\r
", $content)); $this->line($path . ' : Write Success.'); } catch (\Exception $ex) { $this->error($path .' : ' .$ex->getMessage()); } } } }

좋은 웹페이지 즐겨찾기