كوهانا، تحرير ذاكرة التخزين المؤقت لا تعكس في الرأي؟

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

سؤال

أنا أعمل على إعداد التخزين المؤقت لموقعي، لكنني أواجه صعوبة في اختبار ما إذا كان التخزين المؤقت يعمل بشكل صحيح أم لا. لدي ما يلي في جهاز التحكم الخاص بي:

public function read($id, $slug = null)
{
  $this->cache = Cache::instance();
  $story = $this->cache->get("story".$id);

  if (!$story) {
    $story_model = new Story_Model;
    $story = $story_model->get_story($id);
    if (!$story) throw new Kohana_404_Exception();
    $this->cache->set("story".$id, $story);
  }

  $this->template->content = new View('story');
  $this->template->title = htmlspecialchars($story->title);
  $this->template->content->story = $story;
}

هذا يعمل بشكل جيد فقط، يمكنني حتى التحقق من العثور على ذاكرة التخزين المؤقت، ولا يتم إجراء فحص IF () بعد تعيين ذاكرة التخزين المؤقت. ارتباكي هو هذا، لماذا هو عندما أقوم بتعديل ملف التخزين المؤقت الخاص بي، لا تنعكس التغييرات في العرض؟ على سبيل المثال، تبدو ذاكرة التخزين المؤقت الخاصة بي مثل هذا:

O:8:"stdClass":11:{
  s:2:"id";s:3:"636";
  s:5:"title";s:45:"Some Article Title";
  s:4:"link";s:50:"http://www.somesite.com";
  s:8:"category";s:2:"12";
  s:4:"user";s:1:"5";
  s:4:"slug";s:45:"some-article-title";
  s:7:"pubdate";s:19:"2009-08-05 03:57:50";
  s:6:"sticky";s:1:"0";
  s:7:"summary";N;
  s:13:"categorytitle";s:13:"International";
  s:8:"username";s:7:"usernameHere";
}

إذا غيرت title القيمة إلى "عنوان المقالة الجزء 2،" واندلع رأيي، ما زلت أرى اسم العنوان القديم، والتغييرات التي أجريتها على ملف ذاكرة التخزين المؤقت تختفي.

هل أفعل ذلك خطأ؟ كيف يمكنني اختبار ما إذا كان يتم الوصول إلى ملفات ذاكرة التخزين المؤقت بدلا من قاعدة البيانات الخاصة بي؟ متابعة محتويات ملف التكوين الخاصة بي:

$config['default'] = array
(
  'driver'   => 'file',
  'params'   => APPPATH.'cache',
  'lifetime' => 1800,
  'requests' => 1000
);
هل كانت مفيدة؟

المحلول

قيود كائن PHP المسلح القيود على القيم. إلقاء نظرة على السطر التالي:

s:5:"title";s:45:"Some Article Title";

ال s:5 يعني أن القيمة التالية ستكون لديها خمسة أحرف "T-i-t-l-e". وبعد خمسة المجموع. القيمة التالية s:45 يجب أن يكون خمسة وأربعين حرفا. لقد غيرت النص من كل ما كان عليه "Some Article Title" للنشر هنا، لكن الأصلي لديه 45 حرفا في ذلك المجموع.

إن إضافة المزيد من الأحرف، أو طرح الأحفير ستقسم العلاقة بين طول السلسلة ذات القيمة، وترتبط INT-VAL به. لو s:3, ، يجب أن تكون سلسلة الخاص بك ثلاث جرائم طويلة.

بدلا من إضافة / طرح / من القيمة، ما عليك سوى تغيير أحرف زوجين. يتغيرون "Title" ل "Ninja" ثم قم بتحديث صفحتك.

نصائح أخرى

سترغب في تحرير بياناتك في متجر البيانات الأصلي وعلاج التخزين المؤقت مثل الصندوق الأسود.

إذا كنت تستخدم قاعدة بيانات، احصل على مدير قاعدة بيانات جيدة حتى تتمكن من تحرير القيم بسهولة. أنا أستعمل dbvisualizer.... لا تسألني لماذا.

عند استخدام برنامج تشغيل ذاكرة التخزين المؤقت للملفات، سأحذف كل شيء ضمن التطبيق / ذاكرة التخزين المؤقت من أجل مسح ذاكرة التخزين المؤقت واختبار رمز التخزين المؤقت.

والوقت الوحيد الذي أقوم بتحرير ملفات ذاكرة التخزين المؤقت، كان إذا كنت في الواقع كتابة نظام التخزين المؤقت لاستبدال الملفات أو برامج التشغيل Memcached.

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