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 相关文章推荐
第一节--面向对象编程
Nov 16 PHP
Zend framework处理一个http请求的流程分析
Feb 08 PHP
关于php操作mysql执行数据库查询的一些常用操作汇总
Jun 24 PHP
php获取操作系统语言代码
Nov 04 PHP
微信公众号开发之微信公共平台消息回复类实例
Nov 14 PHP
PHP实现的带超时功能get_headers函数
Feb 10 PHP
php递归删除指定文件夹的方法小结
Apr 20 PHP
Linux下从零开始安装配置Nginx服务器+PHP开发环境
Dec 21 PHP
PHP统计目录中文件以及目录中目录大小的方法
Jan 09 PHP
Laravel框架在本地虚拟机快速安装的方法详解
Jun 11 PHP
php ajax数据传输和响应方法
Aug 21 PHP
jQuery ajax+PHP实现的级联下拉列表框功能示例
Feb 12 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数组去重复数据示例
2014/02/25 PHP
PHP指定截取字符串中的中英文或数字字符的实例分享
2016/03/18 PHP
PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法分析
2019/06/12 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
js window.onload 加载多个函数的方法
2009/11/02 Javascript
javascript中的new使用
2010/03/20 Javascript
JavaScript 基础篇(一)
2012/03/30 Javascript
jQuery on()方法使用技巧详解
2015/04/16 Javascript
JavaScript表单验证实例之验证表单项是否为空
2016/01/10 Javascript
JS本地刷新返回上一页代码
2016/07/25 Javascript
js中的eval()函数把含有转义字符的字符串转换成Object对象的方法
2016/12/02 Javascript
Bootstrap免费字体和图标网站(值得收藏)
2017/03/16 Javascript
JS基于对象的特性实现去除数组中重复项功能详解
2017/11/17 Javascript
JS排序算法之希尔排序与快速排序实现方法
2017/12/12 Javascript
js实现导航跟随效果
2018/11/17 Javascript
使用puppeteer爬取网站并抓出404无效链接
2018/12/20 Javascript
Python的Flask框架与数据库连接的教程
2015/04/20 Python
python 字典中取值的两种方法小结
2018/08/02 Python
修改python plot折线图的坐标轴刻度方法
2018/12/13 Python
Python爬取数据保存为Json格式的代码示例
2019/04/09 Python
python使用paramiko模块通过ssh2协议对交换机进行配置的方法
2019/07/25 Python
python爬虫爬取监控教务系统的思路详解
2020/01/08 Python
Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
2020/04/11 Python
Python包和模块的分发详细介绍
2020/06/19 Python
详解HTML5 LocalStorage 本地存储
2016/12/23 HTML / CSS
Kusmi茶美国官网:优质散叶茶和茶包
2019/10/13 全球购物
新加坡最早生产电动滑板车的制造商之一:FunsToTheFore
2020/09/08 全球购物
护理专业毕业生推荐信
2013/10/31 职场文书
护士自荐信范文
2013/12/15 职场文书
成品仓管员工作职责
2013/12/29 职场文书
领导调研接待方案
2014/02/27 职场文书
环卫处个人工作总结
2015/03/04 职场文书
写给女朋友的保证书
2015/05/09 职场文书
预备党员介绍人意见
2015/06/01 职场文书
创业计划书之淘宝网店
2019/10/08 职场文书
MySQL 服务和数据库管理
2021/11/11 MySQL