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 empty函数 使用说明
Aug 10 PHP
腾讯微博提示missing parameter errorcode 102 错误的解决方法
Dec 22 PHP
PHP模块化安装教程
Jun 01 PHP
thinkphp中的url跳转用法分析
Jul 12 PHP
Yii调试查看执行SQL语句的方法
Jul 15 PHP
Yii2中SqlDataProvider用法示例
Sep 22 PHP
php基于curl主动推送最新内容给百度收录的方法
Oct 14 PHP
浅谈PHP的反射机制
Dec 15 PHP
Yii框架引用插件和ckeditor中body与P标签去除的方法
Jan 19 PHP
PHPExcel在linux环境下导出报500错误的解决方法
Jan 26 PHP
ThinkPHP3.1.x修改成功与失败跳转页面的方法
Sep 29 PHP
PHP实现与java 通信的插件使用教程
Aug 11 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扩展函数
2006/10/09 PHP
ASP和PHP都是可以删除自身的
2007/04/09 PHP
PHP SPL 被遗落的宝石【SPL应用浅析】
2018/04/20 PHP
tp5(thinkPHP5)框架数据库Db增删改查常见操作总结
2019/01/10 PHP
PHP随机生成中文段落示例【测试网站内容时使用】
2020/04/26 PHP
php上传图片并给图片打上透明水印的代码
2010/06/07 Javascript
jQuery Ajax提交表单查询获得数据实例代码
2012/09/19 Javascript
Jquery读取URL参数小例子
2013/08/30 Javascript
Mac地址验证的javascript代码
2013/11/09 Javascript
javascript操作excel生成报表全攻略
2014/05/04 Javascript
php+ajax+jquery实现点击加载更多内容
2015/05/03 Javascript
js操作数据库实现注册和登陆的简单实例
2016/05/26 Javascript
使用Angular缓存父页面数据的方法
2017/01/03 Javascript
vue表单绑定实现多选框和下拉列表的实例
2017/08/12 Javascript
this.$toast() 了解一下?
2019/04/18 Javascript
JS函数动态传递参数的方法分析【基于arguments对象】
2019/06/05 Javascript
如何提升vue.js中大型数据的性能
2019/06/21 Javascript
vue flex 布局实现div均分自动换行的示例代码
2020/08/05 Javascript
举例简单讲解Python中的数据存储模块shelve的用法
2016/03/03 Python
Python实现拷贝多个文件到同一目录的方法
2016/09/19 Python
python学习教程之使用py2exe打包
2017/09/24 Python
pandas重新生成索引的方法
2018/11/06 Python
Python + OpenCV 实现LBP特征提取的示例代码
2019/07/11 Python
Python操作Word批量生成合同的实现示例
2020/08/28 Python
用css3制作纸张效果(外翻卷角)
2013/02/01 HTML / CSS
德国箱包网上商店:koffer24.de
2016/07/27 全球购物
意大利巧克力店:Chocolate Shop
2019/07/24 全球购物
Timberland澳大利亚官网:全球领先的户外品牌
2019/12/10 全球购物
介绍一下.NET构架下remoting和webservice
2014/05/08 面试题
代理班主任的自我评价
2014/02/04 职场文书
小班秋游活动方案
2014/02/22 职场文书
小学生竞选班长演讲稿
2014/04/24 职场文书
工作收入证明模板
2014/10/10 职场文书
工会经费申请报告
2015/05/15 职场文书
办公室管理规章制度
2015/08/04 职场文书
一篇文章弄懂MySQL查询语句的执行过程
2021/05/07 MySQL