PHP

วิธีใช้ class Template ตอนที่ 4 Memcached


ตอนนี้ได้อะไรบ้าง

  • cache ทั้งหน้าด้วย Memcached
  • cache บางส่วนด้วย Memcached
  • $tp->generate();
  • $tp->applyBlock();

หลักการทำงาน
โดยปกติเราจะแสดงผลลัพท์ออกมาเลยด้วย $tp->display(); หากต้องการใช้งานอย่างอื่น
สามารถนำผลลัพท์ที่ได้จาก $tp->generate(); ไปใช้ ในตัวอย่างนี้คือการเก็บลง Memcached

ทั้ง 2 ตัวอย่างให้ลองกด reload ถี่ๆ สังเกตุตรงเวลา cache จะเปลี่ยนใหม่ทุก 5 วินาที
ผลการทำงาน 1 (cache ทั้งหน้า)
ผลการทำงาน 2 (cache บางส่วน)

_tp_memcached.html

<!DOCTYPE html>
<html>
<head>
<title>$title</title>
<link rel="stylesheet" href="module/bootstrap/bootstrap.min.css">
</head>
<body>

<div class="container">
    <h3>$now</h3>

    <ul class="list-group">
    $data
    <!--SiXhEaD:data--><li class="list-group-item">$no. $now</li>
    <!--/SiXhEaD:data-->
    </ul>
</div>

<script src="module/jquery/jquery.min.js"></script>
<script src="module/bootstrap/bootstrap.min.js"></script>
</body>
</html>

memcached1.php

<?php
require 'module/SiXhEaD.Template.php';

$mem = new Memcached();
$mem->addServer('127.0.0.1', 0000);

$cache_name = "test1";
$cache = $mem->get($cache_name);
if (!$cache) {
    $tp = new Template('_tp_memcached.html');

    $title = 'วิธีใช้งานกับ Memcached1';
    $now = date('Y-m-d H:i:s');

    $tp->block('data');
    for ($no = 1; $no < 6; $no++) {
        $tp->apply();
    }

    $cache = $tp->generate();
    $mem->set($cache_name, $cache, 5);
}

echo $cache;
exit;

memcached2.php

<?php
require 'module/SiXhEaD.Template.php';

$mem = new Memcached();
$mem->addServer('127.0.0.1', 0000);

$tp = new Template('_tp_memcached.html');

$title = 'วิธีใช้งานกับ Memcached2';
$now = date('Y-m-d H:i:s');

$cache_name = "test2";
$data = $mem->get($cache_name);
if (!$data) {
    for ($no = 1; $no < 6; $no++) {
        $data .= $tp->applyBlock('data');
    }
    $mem->set($cache_name, $data, 5);
}

$tp->display();
exit;