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 取得瑞年与平年的天数的代码
Aug 10 PHP
PHP 冒泡排序算法的实现代码
Aug 08 PHP
php统计文件大小,以GB、MB、KB、B输出
May 29 PHP
php中批量删除Mysql中相同前缀的数据表的代码
Jul 01 PHP
windows环境下php配置memcache的具体操作步骤
Jun 09 PHP
php字符串截取的简单方法
Jul 04 PHP
那些年我们错过的魔术方法(Magic Methods)
Jan 14 PHP
php定义数组和使用示例(php数组的定义方法)
Mar 29 PHP
简单了解PHP编程中数组的指针的使用
Nov 30 PHP
thinkPHP引入类的方法详解
Dec 08 PHP
php二维码生成以及下载实现
Sep 28 PHP
PHP工厂模式简单实现方法示例
May 23 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
ajax 的post方法实例(带循环)
2011/07/04 PHP
用来解析.htgroup文件的PHP类
2012/09/05 PHP
PHP内核探索:变量概述
2014/01/30 PHP
浅谈laravel框架sql中groupBy之后排序的问题
2019/10/17 PHP
php框架CI(codeigniter)自动加载与自主创建对象操作实例分析
2020/06/06 PHP
Jquery UI震动效果实现原理及步骤
2013/02/04 Javascript
JS获取select的value和text值的简单实例
2014/02/26 Javascript
jquery插件开发之实现md5插件
2014/03/17 Javascript
JavaScript简单表格编辑功能实现方法
2015/04/16 Javascript
jquery validate和jquery form 插件组合实现验证表单后AJAX提交
2015/08/26 Javascript
如何让一个json文件显示在表格里【实现代码】
2016/05/09 Javascript
原生JavaScript编写canvas版的连连看游戏
2016/05/29 Javascript
javascript函数中的3个高级技巧
2016/09/22 Javascript
JS作用域深度解析
2016/12/29 Javascript
jQuery访问浏览器本地存储cookie、localStorage和sessionStorage的基本用法
2017/10/20 jQuery
Vue+webpack项目配置便于维护的目录结构教程详解
2018/10/14 Javascript
Vue中使用canvas方法总结
2019/02/12 Javascript
JS开发常用工具函数(小结)
2019/07/04 Javascript
JavaScript设计模式之策略模式实现原理详解
2020/05/29 Javascript
nodejs中内置模块fs,path常见的用法说明
2020/11/07 NodeJs
如何使用gpu.js改善JavaScript的性能
2020/12/01 Javascript
[03:03]DOTA2 2017国际邀请赛开幕战队入场仪式
2017/08/09 DOTA
Python中的CURL PycURL使用例子
2014/06/01 Python
Python import与from import使用及区别介绍
2018/09/06 Python
解决pycharm下os.system执行命令返回有中文乱码的问题
2019/07/07 Python
python字典排序的方法
2019/10/12 Python
python 6.7 编写printTable()函数表格打印(完整代码)
2020/03/25 Python
python安装mysql的依赖包mysql-python操作
2021/01/01 Python
使用CSS3配合IE滤镜实现渐变和投影的效果
2015/09/06 HTML / CSS
进程的查看和调度分别使用什么命令
2015/03/25 面试题
党的群众路线教育实践活动学习心得体会
2014/03/03 职场文书
企业演讲稿范文大全
2014/05/20 职场文书
公司董事长岗位职责
2014/06/08 职场文书
爱护花草树木的标语
2014/06/11 职场文书
党的群众路线教育实践活动个人整改措施范文
2014/11/04 职场文书
高校教师个人工作总结2014
2014/12/17 职场文书