php+Memcached实现简单留言板功能示例


Posted in PHP onFebruary 15, 2017

本文实例讲述了php+Memcached实现简单留言板功能。分享给大家供大家参考,具体如下:

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,3600);
}
foreach($res as $val){
  echo $val['title']."-------".$val['content']."<br>";
}
?>
<a href="AddMessage.php" rel="external nofollow" >添加留言</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");

运行结果如下所示:

php+Memcached实现简单留言板功能示例

php+Memcached实现简单留言板功能示例

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

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP学习之PHP运算符
Oct 09 PHP
php一些公用函数的集合
Mar 27 PHP
PHP 采集获取指定网址的内容
Jan 05 PHP
php的urlencode()URL编码函数浅析
Aug 09 PHP
php中通过数组进行高效随机抽取指定条记录的算法
Sep 09 PHP
百度站点地图(百度sitemap)生成方法分享
Jan 09 PHP
PHP远程采集图片详细教程
Jul 01 PHP
CI框架实现cookie登陆的方法详解
May 18 PHP
php实现的双色球算法示例
Jun 20 PHP
php实现与python进行socket通信的方法示例
Aug 30 PHP
thinkPHP5框架导出Excel文件简单操作示例
Aug 03 PHP
PHP7数组的底层实现示例
Aug 25 PHP
thinkphp3.2中实现phpexcel导出带生成图片示例
Feb 14 #PHP
PHP中Trait及其应用详解
Feb 14 #PHP
php数组指针操作详解
Feb 14 #PHP
PHP中include()与require()的区别说明
Feb 14 #PHP
php中的抽象方法和抽象类
Feb 14 #PHP
PHP静态成员变量和非静态成员变量详解
Feb 14 #PHP
PHP静态成员变量
Feb 14 #PHP
You might like
PHP数组传递是值传递而非引用传递概念纠正
2013/01/31 PHP
linux中cd命令使用详解
2015/01/08 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
使用 JScript 创建 .exe 或 .dll 文件的方法
2011/07/13 Javascript
Javascript 面向对象(二)封装代码
2012/05/23 Javascript
jquery检测input checked 控件是否被选中的方法
2014/03/26 Javascript
js实现div闪烁原理及实现代码
2014/06/24 Javascript
使用JavaScript进行进制转换将字符串转换为十进制
2014/09/21 Javascript
javascript实现信息增删改查的方法
2015/07/25 Javascript
Javascript实现鼠标右键特色菜单
2015/08/04 Javascript
HTML5之WebSocket入门3 -通信模型socket.io
2015/08/21 Javascript
require.js配合插件text.js实现最简单的单页应用程序
2016/07/12 Javascript
Vue.directive自定义指令的使用详解
2017/03/10 Javascript
React根据宽度自适应高度的示例代码
2017/10/11 Javascript
vue.js绑定事件监听器示例【基于v-on事件绑定】
2018/07/07 Javascript
使用puppeteer爬取网站并抓出404无效链接
2018/12/20 Javascript
vue element实现表格合并行数据
2020/11/30 Vue.js
python 布尔操作实现代码
2013/03/23 Python
Scrapy框架CrawlSpiders的介绍以及使用详解
2017/11/29 Python
python web框架 django wsgi原理解析
2019/08/20 Python
PyTorch中topk函数的用法详解
2020/01/02 Python
Python模拟登录requests.Session应用详解
2020/11/17 Python
详解rem 适配布局
2018/10/31 HTML / CSS
美国知名艺术画网站:Art.com
2017/02/09 全球购物
美国定制钻石订婚戒指:Ritani
2017/12/08 全球购物
美国在线眼镜店:GlassesShop
2018/11/15 全球购物
Oakley西班牙官方商店:太阳眼镜和男女运动服
2019/04/26 全球购物
Nicole Miller官方网站:纽约女装品牌
2019/09/14 全球购物
三星俄罗斯授权在线商店:Samsung俄罗斯
2019/09/28 全球购物
JoJo Maman Bébé爱尔兰官网:英国最受欢迎的精品母婴品牌
2020/12/20 全球购物
校园安全广播稿
2014/02/08 职场文书
巡警年度自我鉴定
2014/02/21 职场文书
机械专业求职信
2014/05/25 职场文书
拓展训练激励口号
2014/06/17 职场文书
php中配置文件保存修改操作 如config.php文件的读取修改等操作
2021/05/12 PHP
TypeScript中条件类型精读与实践记录
2021/10/05 Javascript