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 相关文章推荐
利用文件属性结合Session实现在线人数统计
Oct 09 PHP
解析在zend Farmework下如何创立一个FORM表单
Jun 28 PHP
深入解析Session是否必须依赖Cookie
Aug 02 PHP
javascript some()函数用法详解
Nov 13 PHP
php调整服务器时间的方法
Apr 03 PHP
PHP批量生成图片缩略图的方法
Jun 18 PHP
PHP实现的简单缓存类
Jul 29 PHP
php事务回滚简单实现方法示例
Mar 28 PHP
PHP使用SWOOLE扩展实现定时同步 MySQL 数据
Apr 09 PHP
laravel5.4生成验证码的实例讲解
Aug 05 PHP
PHP实现权限管理功能示例
Sep 22 PHP
php实现将数据做成json的格式给前端使用
Aug 21 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
不用数据库的多用户文件自由上传投票系统(1)
2006/10/09 PHP
php下载远程文件类(支持断点续传)
2008/11/14 PHP
php学习笔记 面向对象的构造与析构方法
2011/06/13 PHP
简单谈谈php中的unicode和utf8编码
2015/06/10 PHP
PHP中Enum(枚举)用法实例详解
2015/12/07 PHP
详解YII关联查询
2016/01/10 PHP
Windows Server 2008 R2和2012中PHP连接MySQL过慢的解决方法
2016/07/02 PHP
DHTML 中的绝对定位
2006/11/26 Javascript
javascript replace方法与正则表达式
2008/02/19 Javascript
用于判断用户注册时,密码强度的JS代码
2009/01/01 Javascript
javascript删除数组元素并且数组长度减小的简单实例
2014/02/14 Javascript
jquery右下角自动弹出可关闭的广告层
2015/05/08 Javascript
javascript实现仿腾讯游戏选择
2015/05/14 Javascript
Javascript函数的参数
2015/07/16 Javascript
使用jQuery在移动页面上添加按钮和给按钮添加图标
2015/12/04 Javascript
JavaScript判断按钮被点击的方法
2015/12/13 Javascript
Bootstrap学习系列之使用 Bootstrap Typeahead 组件实现百度下拉效果
2016/07/07 Javascript
微信小程序 增、删、改、查操作实例详解
2017/01/13 Javascript
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
2017/09/06 NodeJs
详解Vue2.0配置mint-ui踩过的那些坑
2018/04/23 Javascript
vue生成文件本地打开查看效果的实例
2018/09/06 Javascript
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
2018/11/01 NodeJs
小程序文字跑马灯效果
2018/12/28 Javascript
JS实现点击发送验证码 xx秒后重新发送功能
2019/07/30 Javascript
原生JS 实现的input输入时表格过滤操作示例
2019/08/03 Javascript
[44:40]KG vs LGD 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python遍历目录的4种方法实例介绍
2015/04/13 Python
ansible作为python模块库使用的方法实例
2017/01/17 Python
全球销量第一生发产品:Viviscal
2017/12/21 全球购物
有影响力的人、名人和艺术家的官方商品:Represent
2019/11/26 全球购物
会计电算化专业自荐信
2014/03/15 职场文书
会计专业求职信范文
2014/03/16 职场文书
入党积极分子培养联系人意见
2015/08/12 职场文书
2016年万圣节活动总结
2016/04/05 职场文书
vue项目两种方式实现竖向表格的思路分析
2021/04/28 Vue.js
MySQL数据库如何查看表占用空间大小
2022/06/10 MySQL