2016-11-21 15 views
0

データベースへの接続に問題があります。具体的には、システムにアクセスしようとしたときにデータベースが応答しないときです。開始時のDatabe接続エラー

私のservices.phpファイルにエラーが発生しました。

そして、これはコードです:

 try{ 
$di->set('db', function() use ($config) { 
    $config = $config->get('database')->toArray(); 
    $dbClass = 'Phalcon\Db\Adapter\Pdo\\' . $config['adapter']; 
    if (stripos($config['adapter'], 'Mysql')!== false) { 
     $mi_conf = array(
      "host" => $config['host'], 
      "username" => $config['username'], 
      "password" => $config['password'], 
      "dbname" => $config['dbname'], 
      "options" => array(
       PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8' 
      ) 
     );  
    } else { 
     $mi_conf = array(
      "dbname" => '//'.$config['host'].'/'.$config['dbname'], 
      "username" => $config['username'], 
      "password" => $config['password'], 
      'charset' => 'utf8' 
     ); 
    } 

    unset($config['adapter']); 

    return new $dbClass($mi_conf); 
}); 
} catch (Exception $e) { 
    $error .= 'db, '; 
    return null; 
} 

そこに変更したり、私は各モデルから各呼び出しに変更を加えることが必要になる場合、私は知りません。

アドバイスはありますか?

ありがとうございます。

+0

エラーは何ですか。 – dubes

+0

接続タイムアウト。データベースはオフラインでしたが、私は再びオンにしますが、私はこのエラーをキャッチしたいと思います。どうも。 – Darkerviti

答えて

1

コードはエラーなく表示されます。 setSharedを使用して、データベースへの接続を複数回行わないようにするか、設定の「永続的」属性を有効にします。多分それはトリックを行います。ところで、try catchをサービスが作成された瞬間に変更して、例外をキャッチすることができます。

 $di->setShared('db', function() use ($config) { 
try { 
      $config = $config->get('database')->toArray(); 
      $dbClass = 'Phalcon\Db\Adapter\Pdo\\' . $config['adapter']; 
      if (stripos($config['adapter'], 'Mysql') !== false) { 
       $mi_conf = array(
        "host"  => $config['host'], 
        "username" => $config['username'], 
        "password" => $config['password'], 
        "dbname" => $config['dbname'], 
        "persistent" => false, 
        "options" => array(
         PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8', 
        ), 
       ); 
      } else { 
       $mi_conf = array(
        "dbname" => '//' . $config['host'] . '/' . $config['dbname'], 
        "username" => $config['username'], 
        "password" => $config['password'], 
        "persistent" => false, 
        'charset' => 'utf8', 
       ); 
      } 

      unset($config['adapter']); 

      return new $dbClass($mi_conf); 
} catch (Exception $e) { 
     $error .= 'db, '; 
     return null; 
    } 
     }); 
関連する問題