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之数据库操作详解及乱码解决!
Jan 02 PHP
PHP 手机归属地查询 api
Feb 08 PHP
php通用防注入程序 推荐
Feb 26 PHP
linux下使用crontab实现定时PHP计划任务失败的原因分析
Jul 05 PHP
ThinkPHP验证码和分页实例教程
Aug 22 PHP
PHP实现将浏览历史页面网址保存到cookie的方法
Jan 26 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
Mar 05 PHP
php解决DOM乱码的方法示例代码
Nov 20 PHP
php7基于递归实现删除空文件夹的方法示例
Jun 15 PHP
PHP5.5基于mysqli连接MySQL数据库和读取数据操作实例详解
Feb 16 PHP
PHP模型Model类封装数据库操作示例
Mar 14 PHP
laravel 根据不同组织加载不同视图的实现
Oct 14 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
环境会对咖啡种植有什么影响
2021/03/03 咖啡文化
第十二节--类的自动加载
2006/11/16 PHP
用php获取本周,上周,本月,上月,本季度日期的代码
2009/08/05 PHP
php简单提示框alert封装函数
2010/08/08 PHP
详解WordPress中提醒安装插件以及隐藏插件的功能实现
2015/12/25 PHP
php中使用websocket详解
2016/09/23 PHP
laravel5.2表单验证,并显示错误信息的实例
2019/09/29 PHP
getElementByIdx_x js自定义getElementById函数
2012/01/24 Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
2015/05/03 Javascript
vue指令以及dom操作详解
2017/03/04 Javascript
jQuery插件HighCharts绘制简单2D折线图效果示例【附demo源码】
2017/03/21 jQuery
使用 Node.js 对文本内容分词和关键词抽取
2017/05/27 Javascript
JS中图片压缩的方法小结
2017/11/14 Javascript
iview中Select 选择器多选校验方法
2018/03/15 Javascript
vue的全局变量和全局拦截请求器的示例代码
2018/09/13 Javascript
koa2 从入门到精通(小结)
2019/07/23 Javascript
node 版本切换的实现
2020/02/02 Javascript
介绍Python的@property装饰器的用法
2015/04/28 Python
Python的Django框架中自定义模版标签的示例
2015/07/20 Python
教你用一行Python代码实现并行任务(附代码)
2018/02/02 Python
python3 批量获取对应端口服务的实例
2019/07/25 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
2019/08/23 Python
Django+uni-app实现数据通信中的请求跨域的示例代码
2019/10/12 Python
Python多线程实现支付模拟请求过程解析
2020/04/21 Python
python根据完整路径获得盘名/路径名/文件名/文件扩展名的方法
2020/04/22 Python
Python基于QQ邮箱实现SSL发送
2020/04/26 Python
解决virtualenv -p python3 venv报错的问题
2021/02/05 Python
美国创意礼品网站:UncommonGoods
2017/02/03 全球购物
Nordgreen英国官网:斯堪的纳维亚设计师手表
2018/10/24 全球购物
毕业生精彩的自我评价分享
2013/10/06 职场文书
承诺书样本
2014/08/30 职场文书
2014年幼儿园学期工作总结
2014/12/05 职场文书
2015年护士节活动策划方案
2015/05/04 职场文书
《狮子和鹿》教学反思
2016/02/16 职场文书
创业计划书之书店
2019/09/10 职场文书
浅谈Redis缓冲区机制
2022/06/05 Redis