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 相关文章推荐
超强分页类2.0发布,支持自定义风格,默认4种显示模式
Jan 02 PHP
PHP 批量更新网页内容实现代码
Jan 05 PHP
使用Linux五年积累的一些经验技巧
Jun 20 PHP
关于js和php对url编码的处理方法
Mar 04 PHP
PHP中使用imagick实现把PDF转成图片
Jan 26 PHP
PHP下载远程文件到本地存储的方法
Mar 24 PHP
CI框架整合widget(页面格局)的方法
May 17 PHP
完美利用Yii2微信后台开发的系列总结
Jul 18 PHP
PHP 芝麻信用接入的注意事项
Dec 01 PHP
php 删除指定文件夹的实例讲解
Jul 25 PHP
php-fpm重启导致的程序执行中断问题详解
Apr 29 PHP
如何判断微信付款码和支付宝付款码
Apr 01 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 self与$this的详解
2013/06/08 PHP
PHP常用的排序和查找算法
2015/08/06 PHP
PHP常用算法和数据结构示例(必看篇)
2017/03/15 PHP
js option删除代码集合
2008/11/12 Javascript
JavaScript 动态改变图片大小
2009/06/11 Javascript
Jquery调用webService远程访问出错的解决方法
2010/05/21 Javascript
网页防止tab键的使用快速解决方法
2013/11/07 Javascript
javascript学习笔记(四)function函数部分
2014/09/30 Javascript
深入浅析JavaScript中数据共享和数据传递
2016/04/25 Javascript
Vue v2.5 调整和更新不完全问题
2017/10/24 Javascript
使用bootstrap实现下拉框搜索功能的实例讲解
2018/08/10 Javascript
详解小程序rich-text对富文本支持方案
2018/11/28 Javascript
详解原生JS回到顶部
2019/03/25 Javascript
用node撸一个监测复联4开售短信提醒的实现代码
2019/04/10 Javascript
layer设置maxWidth及maxHeight解决方案
2019/07/26 Javascript
JS Ajax请求会话过期处理问题解决方法分析
2019/11/16 Javascript
Vue 实现创建全局组件,并且使用Vue.use() 载入方式
2020/08/11 Javascript
vue项目接口管理,所有接口都在apis文件夹中统一管理操作
2020/08/13 Javascript
JS数组索引检测中的数据类型问题详解
2021/01/11 Javascript
在DigitalOcean的服务器上部署flaskblog应用
2015/12/19 Python
解决Python出现_warn_unsafe_extraction问题的方法
2016/03/24 Python
Python简单实现TCP包发送十六进制数据的方法
2016/04/16 Python
python使用opencv按一定间隔截取视频帧
2018/03/06 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
2020/01/08 Python
解决python3插入mysql时内容带有引号的问题
2020/03/02 Python
PyQt5实现简单的计算器
2020/05/30 Python
Python图像处理之膨胀与腐蚀的操作
2021/02/07 Python
美国彩妆品牌:Coastal Scents
2017/04/01 全球购物
澳洲的UGG雪地靴超级市场:Uggs.com.au
2020/04/06 全球购物
预备党员的自我评价
2014/03/12 职场文书
村班子对照检查材料
2014/08/18 职场文书
党员四风问题对照检查材料
2014/09/27 职场文书
报案材料怎么写
2015/05/25 职场文书
初婚初育证明范本
2015/06/18 职场文书
python实现ROA算子边缘检测算法
2021/04/05 Python
windows server 2012安装FTP并配置被动模式指定开放端口
2022/06/10 Servers