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版)
Oct 09 PHP
php中cookie的作用域
Mar 27 PHP
php开启安全模式后禁用的函数集合
Jun 26 PHP
解析PHP可变函数的经典用法
Jun 20 PHP
destoon官方标签大全
Jun 20 PHP
PHP实现的汉字拼音转换和公历农历转换类及使用示例
Jul 01 PHP
php中Array2xml类实现数组转化成XML实例
Dec 08 PHP
详解WordPress中分类函数wp_list_categories的使用
Jan 04 PHP
基于ThinkPHP实现的日历功能实例详解
Apr 15 PHP
php弹出提示框的是实例写法
Sep 26 PHP
浅谈laravel框架sql中groupBy之后排序的问题
Oct 17 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
Feb 06 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
第4章 数据处理-php正则表达式-郑阿奇(续)
2011/07/04 PHP
PHP文件去掉PHP注释空格的函数分析(PHP代码压缩)
2013/07/02 PHP
PHP系统命令函数使用分析
2013/07/05 PHP
JavaScript下申明对象的几种方法小结
2008/10/02 Javascript
csdn 博客的css样式 v3
2009/02/24 Javascript
一些主流JS框架中DOMReady事件的实现小结
2011/02/12 Javascript
range 标准化之获取
2011/08/28 Javascript
javascript之典型高阶函数应用介绍
2013/01/10 Javascript
sails框架的学习指南
2014/12/22 Javascript
原生js实现类似弹窗抖动效果
2015/04/02 Javascript
Javascript中typeof 用法小结
2015/05/12 Javascript
基于JavaScript操作DOM常用的API小结
2015/12/01 Javascript
HTML5游戏引擎LTweenLite实现的超帅动画效果(附demo源码下载)
2016/01/26 Javascript
内容滑动切换效果jquery.hwSlide.js插件封装
2016/07/07 Javascript
获取当前月(季度/年)的最后一天(set相关操作及应用)
2016/12/27 Javascript
JS实现京东首页之页面顶部、Logo和搜索框功能
2017/01/12 Javascript
JS正则获取HTML元素的方法
2017/03/31 Javascript
深入理解vue-loader如何使用
2017/06/06 Javascript
Vue SSR 组件加载问题
2018/05/02 Javascript
解决Vue-cli npm run build生产环境打包,本地不能打开的问题
2018/09/20 Javascript
node实现分片下载的示例代码
2018/10/17 Javascript
javascript面向对象程序设计实践常用知识点总结
2019/07/29 Javascript
layui 上传插件 带预览 非自动上传功能的实例(非常实用)
2019/09/23 Javascript
Vue插件之滑动验证码用法详解
2020/04/05 Javascript
js对象属性名驼峰式转下划线的实例代码
2020/09/17 Javascript
详解vue中在父组件点击按钮触发子组件的事件
2020/11/13 Javascript
python多线程threading.Lock锁用法实例
2014/11/01 Python
Python编写屏幕截图程序方法
2015/02/18 Python
Python使用email模块对邮件进行编码和解码的实例教程
2016/07/01 Python
python 实现求解字符串集的最长公共前缀方法
2018/07/20 Python
python机器学习库xgboost的使用
2020/01/20 Python
python GUI模拟实现计算器
2020/06/22 Python
python文件及目录操作代码汇总
2020/07/08 Python
ECHT官方网站:男女健身服
2020/02/14 全球购物
银行中层干部培训心得体会
2016/01/11 职场文书
分析JVM源码之Thread.interrupt系统级别线程打断
2021/06/29 Java/Android