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 网页过期时间的控制代码
Jun 29 PHP
PHP中使用crypt()实现用户身份验证的代码
Sep 05 PHP
CodeIgniter基本配置详细介绍
Nov 12 PHP
兼容ie6浏览器的php下载文件代码分享
Jul 14 PHP
PHP中数据类型转换的三种方式
Apr 02 PHP
PHP可变函数学习小结
Nov 29 PHP
WordPress中限制非管理员用户在文章后只能评论一次
Dec 31 PHP
php ci 获取表单中多个同名input元素值的代码
Mar 25 PHP
php使用SAE原生Mail类实现各种类型邮件发送的方法
Oct 10 PHP
PHP实现权限管理功能示例
Sep 22 PHP
PHP+Ajax简单get验证操作示例
Mar 02 PHP
thinkphp5.1框架模板布局与模板继承用法分析
Jul 19 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 文件缓存的性能测试
2010/04/25 PHP
php5.5中类级别的常量使用介绍
2013/10/02 PHP
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.3
2008/03/22 Javascript
使用javascript:将其它类型值转换成布尔类型值的解决方法详解
2013/05/07 Javascript
js操作iframe的一些方法介绍
2013/06/25 Javascript
浏览器的JavaScript引擎的识别方法
2013/10/20 Javascript
12种不宜使用的Javascript语法整理
2013/11/04 Javascript
jquery1.9 下检测浏览器类型和版本的方法
2013/12/26 Javascript
Json解析的方法小结
2016/06/22 Javascript
jQuery实现微信长按识别二维码功能
2016/08/26 Javascript
巧用数组制作图片切换js代码
2016/11/29 Javascript
微信小程序 欢迎界面开发的实例详解
2016/11/30 Javascript
详解百度百科目录导航树小插件
2017/01/08 Javascript
JS实现简易的图片拖拽排序实例代码
2017/06/09 Javascript
angularjs实现上拉加载和下拉刷新数据功能
2017/06/12 Javascript
Angular5.1新功能分享
2017/12/21 Javascript
解决layui 复选框等内置控件不显示的问题
2018/08/14 Javascript
React组件设计模式之组合组件应用实例分析
2020/04/29 Javascript
[06:10]6.81新信使新套装!给你一个炫酷的DOTA2
2014/05/06 DOTA
[01:02:25]2014 DOTA2华西杯精英邀请赛 5 24 iG VS DK
2014/05/26 DOTA
单利模式及python实现方式详解
2018/03/20 Python
查看django版本的方法分享
2018/05/14 Python
详解Python3的TFTP文件传输
2018/06/26 Python
PyCharm设置每行最大长度限制的方法
2019/01/16 Python
详解js文件通过python访问数据库方法
2019/03/03 Python
python里 super类的工作原理详解
2019/06/19 Python
python中的Elasticsearch操作汇总
2019/10/30 Python
pytorch sampler对数据进行采样的实现
2019/12/31 Python
Python基于BeautifulSoup爬取京东商品信息
2020/06/01 Python
购房意向书范本
2014/04/01 职场文书
志愿者活动总结
2014/04/28 职场文书
幼儿园爱国卫生月活动总结
2014/06/30 职场文书
2014年酒店工作总结范文
2014/11/17 职场文书
2014年党风建设工作总结
2014/11/19 职场文书
python某漫画app逆向
2021/03/31 Python
springboot入门 之profile设置方式
2022/04/04 Java/Android