هل يمكنني إنشاء اتصال قاعدة بيانات بديل على الرغم من وجود اتصال قاعدة بيانات إطار عمل Yii الحالي
-
21-12-2019 - |
سؤال
نحن نقوم بالتطبيق في إطار عمل 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