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 相关文章推荐
一个简单的域名注册情况查询程序
Oct 09 PHP
php 之 没有mysql支持时的替代方案
Oct 09 PHP
php面向对象全攻略 (十五) 多态的应用
Sep 30 PHP
ThinkPHP3.1新特性之对Ajax的支持更加完善
Jun 19 PHP
PHP大转盘中奖概率算法实例
Oct 21 PHP
php内存缓存实现方法
Jan 24 PHP
Laravel 5框架学习之路由、控制器和视图简介
Apr 07 PHP
再推荐十款免费的php开发工具
Nov 09 PHP
详解PHP编码转换函数应用技巧
Oct 22 PHP
PHP搭建大文件切割分块上传功能示例
Jan 04 PHP
php 读写json文件及修改json的方法
Mar 07 PHP
php解决约瑟夫环算法实例分析
Sep 30 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
给apache2.2加上mod_encoding模块後 php5.2.0 处理url出现bug
2007/04/12 PHP
PHP根据图片色界在不同位置加水印的方法
2015/07/01 PHP
Symfony查询方法实例小结
2017/06/28 PHP
PHP学习记录之常用的魔术常量详解
2019/12/12 PHP
javascript操作cookie的文章(设置,删除cookies)
2010/04/01 Javascript
JQuery入门——事件切换之hover()方法应用介绍
2013/02/05 Javascript
js实现无需数据库的县级以上联动行政区域下拉控件
2013/08/14 Javascript
直接在JS里创建JSON数据然后遍历使用
2014/07/25 Javascript
jQuery插件HighCharts实现的2D回归直线散点效果示例【附demo源码下载】
2017/03/09 Javascript
原生JS实现导航下拉菜单效果
2020/11/25 Javascript
JS中LocalStorage与SessionStorage五种循序渐进的使用方法
2017/07/12 Javascript
Vue官方文档梳理之全局配置
2017/11/22 Javascript
详解JS函数stack size计算方法
2018/06/18 Javascript
微信小程序的开发范式BeautyWe.js入门详解
2019/07/10 Javascript
js函数和this用法实例分析
2020/03/13 Javascript
Vue绑定用户接口实现代码示例
2020/11/04 Javascript
Python标准库之collections包的使用教程
2017/04/27 Python
python Socket之客户端和服务端握手详解
2017/09/18 Python
Python 硬币兑换问题
2019/07/29 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
2019/09/07 Python
Python在终端通过pip安装好包以后在Pycharm中依然无法使用的问题(三种解决方案)
2020/03/10 Python
美国在线乐器和设备商店:Musician’s Friend
2018/07/06 全球购物
全球性的在线商店:Vogca
2019/05/10 全球购物
英国健身超市:Fitness Superstore
2019/06/17 全球购物
String s = new String(“xyz”);创建了几个String Object?
2015/08/05 面试题
青年文明号创建承诺
2014/03/31 职场文书
《动手做做看》教学反思
2014/04/09 职场文书
情人节寄语大全
2014/04/11 职场文书
阳光体育活动实施方案
2014/05/25 职场文书
竞聘演讲稿怎么写
2014/08/28 职场文书
学习党代会心得体会
2014/09/05 职场文书
2014年社区工会工作总结
2014/12/18 职场文书
学校捐书倡议书
2015/04/27 职场文书
党员“一帮一”活动总结
2015/05/07 职场文书
openEuler 搭建java开发环境的详细过程
2022/06/10 Servers
Python pyecharts案例超市4年数据可视化分析
2022/08/14 Python