Home  >  Article  >  PHP Framework  >  Laravel access Apollo code example

Laravel access Apollo code example

不言
不言forward
2019-03-02 13:55:486076browse

The content of this article is about the code examples of Laravel accessing Apollo. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

Don’t talk nonsense, just go to the code

<?php

/**
 * Created by PhpStorm.
 * User: dehua
 * Date: 2019/3/1
 * Time: 14:17
 */


return [

    &#39;server&#39; => 'http://10.208.204.46:8161',

    'query' => [
        'app_id' => 'wuc',
        'cluster' => 'default',
        'namespace' => 'application',
    ]

];

Daemon process

namespace App\Console\Commands\Apollo;

use GuzzleHttp\Client;
use Illuminate\Console\Command;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Storage;

class SyncCommand extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'ue:apollo:sync';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = '阿波罗同步';

    protected $config = [];

    protected $url;

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

        $this->url = config('apollo.server') . '/configs/' . implode('/', array_values(config('apollo.query')));
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {


        $this->doSync();
    }


    protected function doSync()
    {

        $client = new Client(['timeout' => 2.00]);

        try {
            $response = $client->request('GET', $this->url);
            $body = json_decode($response->getBody()->getContents(), true);
            $cfg = Arr::get($body, 'configurations', []);
            if (!$cfg) {
                return true;
            }
            $cfg = array_map(function ($value) {
                if ($row = json_decode($value, true)) {
                    return $row;
                }
                return $value;
            }, $cfg);

            $items = [];

            foreach ($cfg as $key => $value) {
                data_set($items, $key, $value);
            }

            foreach ($items as $k => $item) {
                $this->line('Saving ['.$k.']');
                $this->save($k, $item);
            }

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

    }


    protected function save($fileName, $item)
    {

        if(config('apollo.sync.redis', false)){
            cache()->tags('apollo')->forever($fileName, $item);
            $this->line('Saving To Redis '.$fileName);
        }


        if(config('apollo.sync.file', false)){

            $this->line('Saving To File '.$fileName);

            $fileName = 'apollo/' . $fileName . '.php';
            ksort($item);
            $content = implode("\r\n", [
                "<?php",
                "return",
                var_export($item, true) . &#39;;&#39;
            ]);

            Storage::disk(&#39;config&#39;)->put($fileName, $content);
        }

        $this->line('==================');
    }
}

The above is the detailed content of Laravel access Apollo code example. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:segmentfault.com. If there is any infringement, please contact admin@php.cn delete