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面向对象全攻略 (三)特殊的引用“$this”的使用
Sep 30 PHP
PHP imagecreatefrombmp 从BMP文件或URL新建一图像
Jul 16 PHP
如何用PHP实现插入排序?
Apr 10 PHP
PHP用strstr()函数阻止垃圾评论(通过判断a标记)
Sep 28 PHP
使用PHP破解防盗链图片的一个简单方法
Jun 07 PHP
Php-Redis安装测试笔记
Mar 05 PHP
php查询相似度最高的字符串的方法
Mar 12 PHP
PHP单例模式定义与使用实例详解
Feb 06 PHP
php实现留言板功能(会话控制)
May 23 PHP
php判断str字符串是否是xml格式数据的方法示例
Jul 26 PHP
PHP封装cURL工具类与应用示例
Jul 01 PHP
PHP 出现 http500 错误的解决方法
Mar 09 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+AJAX实现无刷新注册(带用户名实时检测)
2007/01/02 PHP
php生成二维码的几种方式整理及使用实例
2013/06/03 PHP
phpmailer发送gmail邮件实例详解
2013/06/24 PHP
php生成短域名函数
2015/03/23 PHP
php显示时间常用方法小结
2015/06/05 PHP
两种php给图片加水印的实现代码
2020/04/18 PHP
详解YII关联查询
2016/01/10 PHP
php简单构造json多维数组的方法示例
2017/06/08 PHP
从Ajax到JQuery Ajax学习
2007/02/14 Javascript
jquery的冒泡事件的阻止与允许(三种实现方法)
2013/02/01 Javascript
jQuery中next()方法用法实例
2015/01/07 Javascript
JavaScript获取对象在页面中位置坐标的方法
2016/02/03 Javascript
Nodejs Stream 数据流使用手册
2016/04/17 NodeJs
vuejs通过filterBy、orderBy实现搜索筛选、降序排序数据
2020/10/26 Javascript
angularjs实现的前端分页控件示例
2017/02/10 Javascript
浅谈JavaScript中的属性:如何遍历属性
2017/09/14 Javascript
js序列化和反序列化的使用讲解
2019/01/19 Javascript
深入分析element ScrollBar滚动组件源码
2019/01/22 Javascript
Vue组件的使用及个人理解与介绍
2019/02/09 Javascript
JS拖动选择table里的单元格完整实例【基于jQuery】
2019/05/28 jQuery
[40:50]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第四场
2014/05/24 DOTA
[43:53]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.22
2019/09/05 DOTA
python pandas 如何替换某列的一个值
2018/06/09 Python
python爬虫 execjs安装配置及使用
2019/07/30 Python
爬虫代理的cookie如何生成运行
2020/09/22 Python
Python中的面向接口编程示例详解
2021/01/17 Python
Manuka Doctor英国官网:真正的麦卢卡蜂蜜和护肤品
2018/10/26 全球购物
TobyDeals美国:在电子产品上获得最好的优惠和折扣
2019/08/11 全球购物
Bravofly德国:预订廉价航班和酒店
2019/09/22 全球购物
大学生自我鉴定
2013/12/16 职场文书
英语专业个人求职信范文
2014/02/01 职场文书
消防安全检查制度
2014/02/04 职场文书
模特大赛策划方案
2014/05/28 职场文书
信息技术国培研修日志
2015/11/13 职场文书
2016年感恩节寄语
2015/12/07 职场文书
MySql存储过程之逻辑判断和条件控制
2021/05/26 MySQL