Memcached实战之简单留言板

12 篇文章 0 订阅

MyPdo.php

<?php

class MyPdo{

    private $pdo;

    function __construct()
    {
        $this->pdo = $this->getPdo();
    }

     /**
     * CreatePDO
     *
     * @return PDO
     */
    public function getPdo()
    {
        $dbms='mysql';
        $dbName='testdb';
        $user='root';
        $pwd='diligentyang';
        $host='localhost';
        $dsn="$dbms:host=$host;dbname=$dbName";
        try{
            $pdo=new PDO($dsn,$user,$pwd);
        }catch(Exception $e){
            echo $e->getMessage().'<br>';
            exit();
        }
        $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
        $pdo->exec("set names utf8");
        return $pdo;
    }

     /**
     * Execute SQL
     *
     * @param string $sql  Sql
     * @param string $mode Mode
     *
     * @return mixed
     */
    function query($sql = "", $mode = "array")
    {
        $sql = trim($sql);
        if ($sql == "") {
            $this->showErrors("the mothe query neet at least one param!");
        }
        $query = $this->pdo->query($sql);

        if (!$query) {
            $this->showErrors("the sql string is false");
        }
        if (strpos(strtolower($sql), "select") ===false) {
            return $query;
        }

        switch ($mode) {
        case 'array' :
            $res = $query->fetchAll(PDO::FETCH_ASSOC);
            break;
        case 'object' :
            $res = $query->fetchObject();
            break;
        case 'count':
            $res = $query->rowCount();
            break;
        default:
            $this->showErrors("SQLERROR: please check your second param!");
        }
        return $res;
    }
    /**
    * 提示错误
    *
    * @param string $str 错误提示内容
    */
    public function showErrors($str)
    {
        echo "<h1>$str<h1/>";
        exit();
    }



}

ShowMessage.php

<?php
include("MyPdo.php");
//连接Memcached服务器
$m = new Memcached();
$m->addServer('127.0.0.1',11211);
//获取Memcached中的list
$res = $m->get("list");
//如果没有数据,则从数据库中查出,并放入Memcached中,如果有数据则直接输出
if(!$res){
    $MyPdo = new MyPdo();
    $res = $MyPdo->query("select * from message","array");
    $m->set('list',$res,0,3600);
}
foreach($res as $val){
    echo $val['title']."-------".$val['content']."<br>";
}
?>

<a href="AddMessage.php">添加留言</a>

AddMessage.php

<form action="CheckAdd.php" method="post">
    标题:<input type="text" name="title"><br>
    内容:<input type="text" name="content"><br>
    <input type="submit" value="提交">
</form>

CheckAdd.php

<?php
include("MyPdo.php");

//连接Memcached服务器
$m = new Memcached();
$m->addServer('127.0.0.1',11211);

$title = $_POST['title'];
$content = $_POST['content'];

$MyPdo = new MyPdo();
$res = $MyPdo->query("insert into message(title,content) values('$title','$content')");
if($res){//如果insert语句执行成功则清除Memcache中的缓存
    $m->delete("list");
}

header("location:ShowMessage.php");

运行结果如下所示:

示例

示例

注:此例子只是简单实现了,留言列表和添加留言功能,需要注意的是,如果对数据库的数据有了添加或修改,需要清除缓存,然后重新缓存一下,已保证数据显示同步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值