هل يمكنني إنشاء اتصال قاعدة بيانات بديل على الرغم من وجود اتصال قاعدة بيانات إطار عمل Yii الحالي

StackOverflow https://stackoverflow.com//questions/23013138

سؤال

نحن نقوم بالتطبيق في إطار عمل yii الذي يعمل مع اتصال mysql db المحدد في ملف config.php.ولكن لسبب ما نريد الاتصال بخادم آخر mysql db.هل يمكنني القيام بذلك بهذه الطريقة (دون استخدام الاتصال الموجود):

public function init_db() 
{ 
    $db_handler = mysqli_connect('http://xxx.xxx.xxx.xxx', 'name', 'password', 'db_name');
    $db_handler->set_charset('utf8');

    // check connection 
    if (mysqli_connect_errno()) {
        throw new Exception ("Error connecting to DB : " . mysqli_connect_error()  );
    }              

    // set autocommit to off 
    mysqli_autocommit($db_handler, FALSE);

    mysqli_query ($db_handler, "set time_zone='Europe/Minsk'");

    return $db_handler;
}

عندما أحاول ذلك، أحصل على الخطأ:mysqli_connect(): php_network_getaddresses: getaddrinfo failed: hostname nor servname provided, or not known

على هذا الخط $db_handler = mysqli_connect('http://xxx.xxx.xxx.xxx', 'name', 'password', 'db_name');

هل هناك أي حل بديل للحصول على اتصال لفترة قصيرة لجلب بعض البيانات من خادم خارجي (وليس مضيف محلي)؟

تحديث

لقد واجهت هذا للتو منبسط.ومع ذلك أحاول:

$connection=new CDbConnection($dsn,$username,$password);
$connection->active=true;

يصدر yii CDbException:

CDbConnection failed to open the DB connection: could not find driver

هل كانت مفيدة؟

المحلول

في ملف التكوين الخاص بك فقط أضف إعدادات اتصال أخرى:

    'db' => array(
        'connectionString' => 'mysql:host=127.0.0.1;dbname=test',
        ....
    ),
    'otherDb' => array(
        'connectionString' => 'mysql:host=127.0.0.1;dbname=test2',
        ....
    ),

واستخدمه مثل Yii::app()->otherDb

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top