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实现文件安全下载
Oct 09 PHP
在WAMP环境下搭建ZendDebugger php调试工具的方法
Jul 18 PHP
洪恩在线成语词典小偷程序php版
Apr 20 PHP
PHP 查找字符串常用函数介绍
Jun 07 PHP
php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
Sep 07 PHP
php调用c接口无错版介绍
Mar 11 PHP
php数组添加元素方法小结
Dec 20 PHP
PHP实现在线阅读PDF文件的方法
Jun 17 PHP
在PHP程序中使用Rust扩展的方法
Jul 03 PHP
深入解析PHP的Yii框架中的event事件机制
Mar 17 PHP
Ajax+PHP实现的分类列表框功能示例
Feb 11 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
Dec 29 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实现window平台的checkdnsrr函数
2015/05/27 PHP
Symfony2在Nginx下的配置方法图文教程
2016/02/04 PHP
php实现的mysqldb读写分离操作类示例
2017/02/07 PHP
如何做到打开一个页面,过几分钟自动转到另一页面
2007/04/20 Javascript
jQuery DOM操作小结与实例
2010/01/07 Javascript
url 编码 js url传参中文乱码解决方案
2010/04/11 Javascript
JavaScript中获取未知对象属性的代码
2011/04/27 Javascript
js 页面关闭前的出现提示的实现代码
2011/05/25 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来
2013/01/23 Javascript
利用ajaxfileupload插件实现文件上传无刷新的具体方法
2013/06/08 Javascript
JS和css实现检测移动设备方向的变化并判断横竖屏幕
2015/05/25 Javascript
jQuery绑定自定义事件的魔法升级版
2016/06/30 Javascript
原生javascript实现的ajax异步封装功能示例
2016/11/03 Javascript
获取JavaScript异步函数的返回值
2016/12/21 Javascript
基于JavaScript实现全选、不选和反选效果
2017/02/15 Javascript
vue中使用localstorage来存储页面信息
2017/11/04 Javascript
Vue3 源码导读(推荐)
2019/10/14 Javascript
javascript中的相等操作符(==与===区别)
2019/12/21 Javascript
js实现自动播放匀速轮播图
2020/02/06 Javascript
详解vue实现坐标拾取器功能示例
2020/11/18 Vue.js
用Python实现通过哈希算法检测图片重复的教程
2015/04/02 Python
Python中的列表知识点汇总
2015/04/14 Python
Python元组常见操作示例
2019/02/19 Python
详解pandas的外部数据导入与常用方法
2019/05/01 Python
关于Python-faker的函数效果一览
2019/11/28 Python
PyTorch如何搭建一个简单的网络
2020/08/24 Python
美国礼品卡商城: Gift Card Mall
2017/08/25 全球购物
澳大利亚有机化妆品网上商店:The Well Store
2020/02/20 全球购物
Internal修饰符有什么含义
2013/07/10 面试题
公司担保书格式范文
2014/05/12 职场文书
高中生第一学年自我鉴定
2014/09/12 职场文书
党的群众路线教育实践活动个人批评与自我批评
2014/10/16 职场文书
2016春季幼儿园小班开学寄语
2015/12/03 职场文书
如何起草一份正确的合伙创业协议书?
2019/07/04 职场文书
PHP控制循环操作的时间
2021/04/01 PHP
python manim实现排序算法动画示例
2022/08/14 Python