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 相关文章推荐
教你IIS6的PHP最佳配置方法
Sep 05 PHP
php下使用SimpleXML 处理XML 文件
Feb 27 PHP
PHP stream_context_create()作用和用法分析
Mar 29 PHP
PHP 获取MySQL数据库里所有表的实现代码
Jul 13 PHP
PHP函数篇之掌握ord()与chr()函数应用
Dec 05 PHP
php检测图片主要颜色的方法
Jul 01 PHP
完美解决phpdoc导出文档中@package的warning及Error的错误
May 17 PHP
php分页原理 分页代码 分页类制作教程
Sep 23 PHP
分享PHP-pcntl 实现多进程代码
Sep 30 PHP
PHP的微信支付接口使用方法讲解
Mar 08 PHP
PHP使用OB缓存实现静态化功能示例
Mar 23 PHP
使用composer命令加载vendor中的第三方类库 的方法
Jul 09 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+javascript实现二级级联菜单的制作
2008/05/06 PHP
PHP上传文件时文件过大$_FILES为空的解决方法
2013/11/26 PHP
php中使用Ajax时出现Error(c00ce56e)的详细解决方案
2014/11/03 PHP
CI框架集成Smarty的方法分析
2016/05/17 PHP
详解PHP安装mysql.so扩展的方法
2016/12/31 PHP
php中简单的对称加密算法实现
2017/01/05 PHP
js身份证验证超强脚本
2008/10/26 Javascript
jqPlot jquery的页面图表绘制工具
2009/07/25 Javascript
经典海量jQuery插件 大家可以收藏一下
2010/02/07 Javascript
JS仿flash上传头像效果实现代码
2011/07/18 Javascript
javascript 在firebug调试时用console.log的方法
2012/05/10 Javascript
基于pthread_create,readlink,getpid等函数的学习与总结
2013/07/17 Javascript
node.js中使用node-schedule实现定时任务实例
2014/06/03 Javascript
jQuery+HTML5实现手机摇一摇换衣特效
2015/06/05 Javascript
浅谈JavaScript中的字符编码转换问题
2015/07/07 Javascript
javascript封装 Cookie 应用接口
2015/08/07 Javascript
bootstrap中添加额外的图标实例代码
2017/02/15 Javascript
基于JS实现9种不同的面包屑和分布式多步骤导航效果
2017/02/21 Javascript
详解让sublime text3支持Vue语法高亮显示的示例
2017/09/29 Javascript
Ionic学习日记实现验证码倒计时
2018/02/08 Javascript
vue.js 使用axios实现下载功能的示例
2018/03/05 Javascript
使用Angular CLI生成 Angular 5项目教程详解
2018/03/18 Javascript
vue.js使用3DES加密的方法示例
2018/05/18 Javascript
Django中使用Celery的方法示例
2018/11/29 Python
Python 处理文件的几种方式
2019/08/23 Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
2020/02/27 Python
德国化妆品和天然化妆品网上商店:kosmetikfuchs.de
2017/06/09 全球购物
可持续木材、生态和铝制太阳镜:Proof Eyewear
2019/07/24 全球购物
C语言面试题
2015/10/30 面试题
生产班组长岗位职责
2014/01/05 职场文书
毕业生见习报告总结
2014/11/08 职场文书
世界遗产的导游词
2015/02/13 职场文书
学生退学证明
2015/06/23 职场文书
2016年大学迎新晚会工作总结
2015/10/15 职场文书
2016教师六五普法学习心得体会
2016/01/21 职场文书
《LOL》“克隆大作战”久违归来 幻灵战队皮肤上线
2022/04/03 其他游戏