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 相关文章推荐
基于mysql的论坛(2)
Oct 09 PHP
php中在PDO中使用事务(Transaction)
May 14 PHP
PHP中iconv函数转码时截断字符问题的解决方法
Jan 21 PHP
PHP读取大文件的多种方法介绍
Apr 04 PHP
Yii实现复选框批量操作实例代码
Mar 15 PHP
什么是PHP文件?如何打开PHP文件?
Jun 27 PHP
Laravel实现定时任务的示例代码
Aug 10 PHP
关于php支持的协议与封装协议总结(推荐)
Nov 17 PHP
PHP学习记录之数组函数
Jun 01 PHP
php PDO属性设置与操作方法分析
Dec 27 PHP
PHP iconv()函数字符编码转换的问题讲解
Mar 22 PHP
php实现的证件照换底色功能示例【人像抠图/换背景图】
May 29 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字符串中抽取子串操作实例分析
2019/06/22 PHP
js multiple全选与取消全选实现代码
2012/12/04 Javascript
网页中返回顶部代码(多种方法)另附注释说明
2013/04/24 Javascript
jQuery ajax动态生成table功能示例
2017/06/14 jQuery
JavaScript for循环 if判断语句(学习笔记)
2017/10/11 Javascript
微信小程序实现列表下拉刷新上拉加载
2020/07/29 Javascript
解决vue 单文件组件中样式加载问题
2019/04/24 Javascript
Vue运用transition实现过渡动画
2019/05/06 Javascript
vue中组件通信的八种方式(值得收藏!)
2019/08/09 Javascript
解决Python中由于logging模块误用导致的内存泄露
2015/04/23 Python
python的Crypto模块实现AES加密实例代码
2018/01/22 Python
对numpy和pandas中数组的合并和拆分详解
2018/04/11 Python
对Python w和w+权限的区别详解
2019/01/23 Python
PyQt5固定窗口大小的方法
2019/06/18 Python
pandas实现to_sql将DataFrame保存到数据库中
2019/07/03 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
2019/07/03 Python
详解如何从TensorFlow的mnist数据集导出手写体数字图片
2019/08/05 Python
python zip,lambda,map函数代码实例
2020/04/04 Python
windows上彻底删除jupyter notebook的实现
2020/04/13 Python
基于CSS3实现立方体自转效果
2016/03/01 HTML / CSS
Sunglasses Shop英国:欧洲领先的太阳镜在线供应商之一
2018/09/19 全球购物
切尔西足球俱乐部官方网上商店:Chelsea FC
2019/06/17 全球购物
介绍一下sql server的安全性
2014/08/10 面试题
什么是事务?为什么需要事务?
2012/01/09 面试题
新大陆软件面试题
2016/11/24 面试题
工程业务员岗位职责
2013/12/31 职场文书
大学生求职信范文应怎么写
2014/01/01 职场文书
驾驶员岗位职责
2014/01/29 职场文书
通信研究生自荐信
2014/02/01 职场文书
同学会主持词
2014/03/18 职场文书
商务助理求职信范文
2014/04/20 职场文书
清正廉洁演讲稿
2014/05/22 职场文书
2014年干部培训工作总结
2014/12/17 职场文书
公司承诺函范文
2015/01/21 职场文书
无工作证明怎么写
2015/06/15 职场文书
Python列表的索引与切片
2022/04/07 Python