शायद एक बेहतर दृष्टिकोण कैश परिणाम है और कैश से पढ़ते हैं, केवल DB मार जब जरूरत ...
<?php
$cacheKey = 'myCacheNumber1';
if (($data = Cache::read($cacheKey)) === false) {
$data = $this->Model->find('all');
if ($data) {
Cache::write($cacheKey, $data);
}
}
?>
इस के साथ समस्या यह मॉडल और डेटाबेस कनेक्शन मान लिया गया है के लिए उपलब्ध हैं वह समय जब कैश मौजूद नहीं है (या समाप्त हो गया है), और यदि यह नहीं था, तो आपको अभी भी वही त्रुटियां मिलेंगी, लेकिन आवृत्ति निश्चित रूप से कम हो जाएगी।
मुझे लगता है कि अगर डीबी उपलब्ध है तो परीक्षण करने के लिए कुछ कस्टम कोड ट्रिकरी की आवश्यकता होगी क्योंकि कनेक्टिंग के केक कोर विधि सफलता प्राप्त करती है और उपलब्ध होने पर भारी विफल हो जाती है। अगर आपको मॉडल लोड करने का प्रयास करना चाहिए तो मैं शायद मानक PHP कनेक्ट विधियों के साथ एक घटक बना सकता हूं।
<?php
$cacheKey = 'myCacheNumber1';
if (($data = Cache::read($cacheKey)) === false) {
if ($this->DbTest->check('hostname','username','password')) {
$data = $this->Model->find('all');
if ($data) {
Cache::write($cacheKey, $data);
}
}
}
?>
<?php
// app/controllers/components/db_test.php
class DbTestComponent extends Object {
function check($hostname,$username,$password) {
$result = true;
$link = @mysql_connect($hostname,$username,$password);
if (!$link) {
$result = false;
}
@mysql_close($link);
return $result;
}
}
?>
हमम। क्या आपके पास ऐसे बड़े डेटाबेस आउटेज हैं जो वास्तव में आवश्यक हैं? क्यूं कर? –
फ़ीड डेटाबेस (स्टॉक की कीमतें डीबी) पेक्का – SMSM