2015-12-23 6 views
5

मैं अपने वेब पेज पर उपयोग करने के लिए कैश क्लास को अपनाने की कोशिश कर रहा हूं।fetch केवल एक पंक्ति देता है जब मैं इसे कैश से प्राप्त करता हूं

सरल तर्क यह है कि तरह है: कैश से डेटा प्राप्त

कोशिश करने के लिए:

  • अगर वहाँ नहीं है: चलाने क्वेरी और एक कैश के रूप में सेट।
  • यदि वहां है: कैश से डेटा दिखाएं।

मेरी कोड

<?php 
// Require Library 
require_once("phpfastcache.php"); 
$cache = phpFastCache(); 

//lets get it from cache. 
$r = $cache->get("cachethis"); 

if($r == null) { 

    echo " THIS TIME RUN WITHOUT CACHE <br> "; 
    $time_start = microtime(true); 

    $query = $handler->query("SELECT * FROM members"); 
     while($r = $query->fetch(PDO::FETCH_ASSOC)) { 

     //echo 
     echo "$r[id]"; 

     //lets cache query above. 
     $cache->set("cachethis", $r, 10); 

     } 

    $time_end = microtime(true); 
    $time = ($time_end - $time_start); 
    echo "<p>done in " . $time . " seconds</p>"; 

} 
//if ($r != null) 
else { 
    echo "RUN WITH CACHE. YES.<br> "; 
    $time_start = microtime(true); 

    //echo from cache.. 
    echo "$r[id]"; 
    $time_end = microtime(true); 
    $time = ($time_end - $time_start); 
    echo "<p>cache done in " . $time . " seconds</p>"; 
} 

?> 

मेरी उत्पादन और समस्या

मैं दो पंक्तियों की है।

जब मैं उन्हें क्वेरी से लाता हूं, तो मेरा कोड दोनों ही आउटपुट करता है। जो अच्छा है।

row1 
row2 

लेकिन जब पृष्ठ इसे कैश से लाता है, तो यह केवल अंतिम पंक्ति आउटपुट करता है।

row2 

मैं क्या

मैं fetch() के बजाय fetchAll() समारोह लेकिन इस बार मैं सूचना हो रही है का उपयोग करने की कोशिश की कोशिश की: अपरिभाषित सूचकांक: आईडी त्रुटि।

तो मैं अटक गया हूं और आपकी मदद की ज़रूरत है।

+0

का उपयोग आप सभी रिकॉर्ड के लिए हर रिकॉर्ड या कैश के लिए कैश है करना चाहते हैं? –

+0

'कैश' वर्ग के 'get' और' set' विधि के साथ अपना प्रश्न अपडेट करें? –

+0

@MaxP। मैं एक ही समय में सभी रिकॉर्ड कैश करना चाहता हूं। – LetsSeo

उत्तर

4

अगर एक बार में सभी रिकॉर्ड के लिए, fetchAll

$r = $cache->get("cachethis"); 

if(!is_array($r)) { 
    // not in cache, from db 
    $query = $handler->query("SELECT * FROM members"); 
    $r = $query->fetchAll(PDO::FETCH_ASSOC); 
    $cache->set("cachethis", $r, 10); 
} 

foreach($r as $v) echo $v['id']."<br>"; 
संबंधित मुद्दे

 संबंधित मुद्दे