php用apollo,Laravel接入Apollo

废话不说,直接上代码

/**

* 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 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) . ';'

]);

Storage::disk('config')->put($fileName, $content);

}

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

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值