Laravel接入Apollo代码示例

2020-08-13 19:53:37
本篇文章给大家带来的内容是关于Laravel接入Apollo代码示例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

废话不说,直接上代码

<?php/** * Created by PhpStorm. * User: dehua * Date: 2019/3/1 * Time: 14:17 */return [    'server' => 'http://10.208.204.46:8161',    'query' => [        'app_id' => 'wuc',        'cluster' => 'default',        'namespace' => 'application',    ]];

守护进程

namespace AppConsoleCommandsApollo;use GuzzleHttpClient;use IlluminateConsoleCommand;use IlluminateSupportArr;use IlluminateSupportFacadesStorage;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("rn", [                "<?php",                "return",                var_export($item, true) . ';'            ]);            Storage::disk('config')->put($fileName, $content);        }        $this->line('==================');    }}