Как подключиться к серверу redis с файлом инициализации и без пароля - PullRequest
0 голосов
/ 12 июня 2018

Во-первых, у меня есть класс Datasource для подключения к серверу Redis.

И у меня есть файл инициализации ip-порта и passwd и т.д .;

Файл redis.ini.php содержимого:

<?php
 $config['redis']['instance1'] = array(
'default' => array(
    'host' => '127.0.0.1',
    'port' => '6379',
    'timeout' => 5,
    'pconnect' => 1,
    'password' => '',
   )
  );
 $config['redis']['instance2'] = array(
'default' => array(
    'host' => '127.0.0.1',
    'port' => '6379',
    'timeout' => 5,
    'pconnect' => 1,
    'password' => '',
 )
);

И код класса Datasource.php:

<?php

namespace common;

class Datasource {

 public static $config_name;  

 public static $server_region;  

 public static $redis_config;

public function __construct() {}

public static function getRedis($config_name = NULL, $server_region = 'default') {


  self::$config_name=$config_name;
  self::$server_region=$server_region;

    global $config;
    self::$redis_config = $config['redis'][$config_name];

    if (self::$config_name && self::$redis_config && self::$server_region) {

        try {
            self::$redis = new \Redis();
            self::$redis->connect(self::$redis_config[$server_region]['host'], self::$redis_config[$server_region]['port']);

        } catch (Exception $e) {
            self::$redis = null;
        }

    } else {
       self::$redis = null;
    }

    return   self::$redis_config[$server_region]['host'] ;
  }
 }

Теперь я хочу использовать этот класс в HTML-коде:

<body style="height:100%" >

<?php 
include "o1ws1v/class/common/Datasource.php";
include 'o1ws1v/conf/redis.ini.php';
$redis_obj = common\Datasource::getRedis('instance1');
echo $redis_obj;
?>
</body>

НоК сожалению, я не могу получить значение corrent: 127.0.0.1 в html.

Я обнаружил, что проблема заключалась в попытке {} catch {}, когда я удаляю этот код, он работает нормально.

//delete these code, it works fine
try {
 self::$redis = new \Redis();
 self::$redis->connect(self::$redis_config[$server_region]['host'], self::$redis_config[$server_region]['port']);

  } catch (Exception $e) {
            self::$redis = null;
   }

Я задал один вопрос час назад в stackoverflow, извините за еще один вопрос.Мой босс требует, чтобы я решил этот вопрос сегодня.

Я определил свой сервер redis без пароля для входа.Кажется, нет ничего плохого в подключении сервера redis. Кто мне может помочь?

1 Ответ

0 голосов
/ 13 июня 2018

Я решил эту проблему

 self::$redis = new \Redis();// it is wrong
 $redis=new \Redis();//it is right
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...