Laravel接入Apollo代码示例
时间:2019-03-02 13:58
本篇文章给大家带来的内容是关于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 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('=================='); } }
以上就是Laravel接入Apollo代码示例的详细内容,更多请关注gxlsystem.com其它相关文章!