ऊपर आपकी टिप्पणियों को देखते हुए और यह मानते हुए कि आपके पास अपने डेटाबेस का सही प्रतिकृति सेटअप है।
समाधान :-
- चरण 1:
फ़ाइल में
ऐप/आदि/config.xml
"core_read" क्लोजिंग टैग ढूंढें
<resources>
....
<core_read>
<connection>
<use>default_read</use>
</connection>
</core_read>
....
</resources>
आफ्टर क्लोजिंग टैग जोड़ें (जितने डेटाबेस आप उपयोग करना चाहते हैं) यह नीचे जैसा दिखना चाहिए:
<resources>
....
<core_read>
<connection>
<use>default_read</use>
</connection>
</core_read>
<slave_db_1>
<connection>
<use>slave_one_db</use>
</connection>
</slave_db_1>
<slave_db_2>
<connection>
<use>slave_two_db</use>
</connection>
</slave_db_2>
....
</resources>
- चरण 2:
और ("/default_setup> " क्लोजिंग टैग )
के बाद अपने apt/etc/local.xml में नया कनेक्शन जोड़ें<resources>
....
<slave_one_db>
<connection>
<host><![CDATA[localhost]]></host>
<username><![CDATA[slave_one_db_user]]></username>
<password><![CDATA[slave_one_db_password]]></password>
<dbname><![CDATA[slave_db_one_name]]></dbname>
<initStatements><![CDATA[SET NAMES utf8]]></initStatements>
<model><![CDATA[mysql4]]></model>
<type><![CDATA[pdo_mysql]]></type>
<pdoType><![CDATA[]]></pdoType>
<active>1</active>
</connection>
</slave_one_db>
<slave_two_db>
<connection>
<host><![CDATA[localhost]]></host>
<username><![CDATA[slave_tow_db_user]]></username>
<password><![CDATA[slave_tow_db_password]]></password>
<dbname><![CDATA[slave_db_one_tow]]></dbname>
<initStatements><![CDATA[SET NAMES utf8]]></initStatements>
<model><![CDATA[mysql4]]></model>
<type><![CDATA[pdo_mysql]]></type>
<pdoType><![CDATA[]]></pdoType>
<active>1</active>
</connection>
</slave_two_db>
....
</resources>
- चरण 3:
फ़ाइल को "app/code/core/Mage/Core/Model/Resource.php" से कॉपी करें ==TO ==> "app/code/local/Mage/Core/Model/Resource.php"
1- सुरक्षित $_mappedTableNames ढूंढें;
2- इस विधि को नीचे जोड़ें:
public function getSlaveDb()
{
$prefix = 'slave_db_'; // prefix for the slaves databased in the xml file
$cookieExpireTime = 1209600; // 2 weeks Cookie ( database selection ) expire time
$dbArray = array(1,2); // All slaves Db in-case the cookie has invalid value
$slaveDb = array_rand( array_flip($dbArray),1 ); // How to alternate between databases ( in this demo i just use 2 database ) adjust the selection of the database to fit hoe many database you want to use !
if(!isset($_COOKIE['read_db']) || !in_array($_COOKIE['read_db'],$dbArray)) // Check for the cookie values
{
setcookie("read_db", $slaveDb, time()+$cookieExpireTime); // set the current database to the user in cookie so next time user use same connection to database ! to avoid jumping or hopping on different databases in short time
}else{
$slaveDb = $_COOKIE['read_db']; // return the database selected if the user has it in the cookies
}
return $prefix.$slaveDb;
}
3- नीचे की तरह दिखने के लिए "सार्वजनिक फ़ंक्शन getConnection($name)" विधि को संशोधित करें:
public function getConnection($name)
{
if($name =='core_read') // Only applied for READ Connections !!!
{
$name = $this->getSlaveDb(); // change the name of the connection to the one we get from our main method
}
//....... Leave the rest of the function as it is !!
}
यह आपको कोर_रीड कनेक्शन के लिए एक्सएमएल और पीएचपी कोड में निर्दिष्ट डेटाबेस का उपयोग करने की अनुमति देगा और मैगेंटो में अन्य सभी कनेक्शनों के लिए डिफॉल्ट_सेटअप कनेक्शन ( core_write, core_setup )
आशा है कि इससे आपकी समस्या का समाधान हो जाएगा।