威尼斯人线上娱乐

依靠thinkPHP框架实现留言板的主意,使用memcached轻松示例分享

3 8月 , 2019  

正文实例陈述了php+Memcached完毕轻松留言板功效。分享给我们供我们参考,具体如下:

正文实例汇报了基于thinkPHP框架达成留言板的不二诀要。分享给我们供我们参谋,具体如下:

正文实例陈说了ThinkPHP框架中动用Memcached缓存数据的措施。分享给大家供我们参照他事他说加以考察,具体如下:

1.加多增加包

MyPdo.php

努力了一天,终于THINKPHP小邓留言版的概念版出来了

ThinkPHP暗中认可使用文件缓存数据,帮衬Memcache等任何缓存格局,有八个PHP增添:Memcache和Memcached,Memcahe官方有表明,主要说一下Memcached。

复制代码 代码如下:

<?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();
  }
}

实在确实THINKPHP开拓进度高速,作为四个互联互连网“搬砖”的,从事这种
纯码农的事也是无可非议的。

相对于PHP Memcache,php
Memcached是依据原生的c的libmemcached的恢弘,越发周详,建议轮换为php
memcached。

php_memcache.dll

ShowMessage.php

代码就达成了如下效果

本子3.2.2起初内置了Memcached驱动(ThinkPHP/Library/Think/Cache/Driver/Memcached.class.php),不过文书档案中并从未表明用法,通过查阅源码配置并测量检验成功。

2.在PHP.INI添加

<?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>

1.留言功用。

有个bug到现在未修复,正是过期时光为0的标题,理论上应当是永世缓存,可是驱动中未做处理,会立刻过期,set方法修改如下

复制代码 代码如下:

AddMessage.php

依靠thinkPHP框架实现留言板的主意,使用memcached轻松示例分享。2.验证效用。

 public function set($name, $value, $expire = null) {
  N('cache_write',1);
  if(is_null($expire)) {
   $expire = $this->options['expire'];
  }
  $name = $this->options['prefix'].$name;
  if (empty($expire))
   $time = 0;
  else
   $time = time() + $expire;
  if($this->handler->set($name, $value, $time)) {
   if($this->options['length']>0) {
    // 记录缓存队列
    $this->queue($name);
   }
   return true;
  }
  return false;
 }

extension=php_memcache.dll

<form action="CheckAdd.php" method="post">
  标题:<input type="text" name="title"><br>
  内容:<input type="text" name="content"><br>
  <input type="submit" value="提交">
</form>

3.分页出示效果。

在陈设文件config.php中加多

3.程序

CheckAdd.php

不畏写了几行代码(PS:页面设计代码不算,就算调节器和模型的代码)

//缓存配置
 'DATA_CACHE_TYPE' => 'Memcached',
 'MEMCACHED_SERVER' => array(
  array('127.0.0.1', 11211, 0)
 ),

复制代码 代码如下:

<?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");

上面作者公布一下决定的器的代码,关于THINKPHP的代码法规本身就不阐述了,看thinkphp手册即可了。

使得中是调用:

<?php
    //创造三个mem对象实例
    $mem=new Memcache;
    if(!$mem->connect(“10.18.110.213”,11211)){
        die(‘连接退步!’);
    }
    //增加
    //1.增加多个字串
/*    if($mem->set(‘key1’,”beijing”,MEMCACHE_COMPRESSED,60)){
        echo ‘添加ok’;
    }*/
    //2.加多数值
/*    if($mem->set(‘key1’,100,MEMCACHE_COMPRESSED,60)){
        echo ‘添加ok’;
    }*威尼斯人线上娱乐 ,/
    //3.加多数组
    //在增加数组是,遵照要求. 希望体系号归入  ,
    //serialize<=>unserialize, 假设依照须求,也得以json_encode
<=> json_decode
    $arr=array(“bj”,’tj’);
   
if($mem->set(‘key1’,$arr,MEMCACHE_COMPRESSED,time()+31*3600*24)){
        echo ‘加多数组ok99111’;
    }
    //4.增添对象
/*    class Dog{
        public $name;
        public $age;
        public function __construct($name,$age){
            $this->name=$name;
            $this->age=$age;
        }
    }
    $dog1=new Dog(‘小狗’,50);
    if($mem->set(‘key1’,$dog1,MEMCACHE_COMPRESSED,60)){
        echo ‘增多对象ok’;
    }*/
    //5.添加null 布尔值
/*    if($mem->set(‘key1’,false,MEMCACHE_COMPRESSED,60)){
        echo ‘增多布尔ok’;
    }*/
    //6. 财富类型放入.
/*    $con=mysql_connect(“127.0.0.1″,”root”,”root”);
    if(!$con){
        die(‘连接数据库失利’);
    }
    var_dump($con);
    echo “<br/>”;
    if($mem->set(‘key1’,$con,MEMCACHE_COMPRESSED,60)){
        echo ‘增添能源ok’;
    }*/
    //查询
    $val=$mem->get(‘key1’);
//修改
    //能够采纳replace
    if($mem->replace(“key11”,’hello’,MEMCACHE_COMPRESSED,60)){
        echo ‘replace ok’;
    }else{
        echo ‘replace no ok’;
    }
    //删除
    echo “<br/>”;
    if($mem->delete(‘key14’)){
        echo ‘key14 删除’;
    }else{
        echo ‘key14不存在’;
    }

运转结果如下所示:

class IndexAction extends Action
{
  public function index() {
    $Form = M("word");
    // 按照id排序显示前6条记录
    import("@.ORG.Page");    //导入分页类
      $count = $Form->count();  //计算总数
      $p = new Page ( $count, 1 );
      $list=$Form->limit($p->firstRow.','.$p->listRows)->order('id desc')->findAll();
      $page = $p->show ();
      $this->assign ( "page", $page );
      $this->assign ( "list", $list );
    $this->display(); //模板调用,这个是关键。
  }
  //数据插入
  public function insert() {
    $word = D("word");
     if($vo = $word->create())
       {
         if(false !== $word->add())
        {
           $this->success("数据添加成功");
         }
         else
         {
          $this->error('数据写入错误!');
         }
       }
    else
      {
       $this->error($word->getError());
      }
  }
  //验证重复
  public function checkTitle()
  {
    if (!empty($_POST['username'])) {
      $Form = M("word");
      //getByTitle是model的获取数据根据某字段获取记录的魔术方法
      //比如getById etc getByXXX XXX大写
      if ($Form->getByUsername($_POST['username'])) {
        $this->error('<font color=red>标题已经存在</font>');
      } else {
        $this->success('标题可以使用!');
      }
    } else {
      $this->error('标题必须');
    }
  }
}
Memcached::addServers(array)

如上就是本文关于php中运用memcache的用法介绍,希望对大家可以享有援救。

威尼斯人线上娱乐 1

下边是注网络模特型的代码

能够加上几个缓存服务器

你或者感兴趣的篇章:

  • php模块memcache和memcached区别深入分析
  • PHP Memcached应用完毕代码
  • php扩展memcached和memcache的装置配备方式
  • PHP
    MemCached高端缓存配置图像和文字化教育程
  • php的memcached客户端memcached
  • PHP MemCached
    高等缓存应用代码
  • php下Memcached入门实例解析
  • php制作文本式留言板
  • php完成网址留言板功用
  • PHP结合Mysql数据库完结留言板功效
  • 依据thinkPHP框架达成留言板的点子
  • php+Memcached达成轻易留言板成效示例

威尼斯人线上娱乐 2

class wordModel extends Model{
  protected $_validate = array(
   array('username', 'require', '称呼必须!', 1),//1为必须验证
   array('email', 'email', '邮箱格式错误!', 2),//2为不为空时验证
   array('qq','number','QQ号错误',2),
   array('content', 'require', '内容必须',1),
   array('username','','称呼已经存在',0,'unique',1)
  );
  protected $_auto = array(
   array('datetime', 'get_date',1, 'callback'),
   array('ip','getip',1,'callback')
  );
  protected function get_date()
  {
   return date("Y-m-d H:i:s");
  }
  protected function getip()
  {
   return $_SERVER['REMOTE_ADDR'];
  }
}

再有一个安插项是 MEMCACHED_LIB,调用的是:

注:此例子只是简短完成了,留言列表和加多留言功能,需求注意的是,要是对数据库的数码有了丰裕或改变,需求排除缓存,然后再度缓存一下,已保险数据展现同步。

thinkphp有三个要小心的,在CU奇骏D操作中,都鲜明要用表名。

Memcached::setOptions(array)

越来越多关于PHP相关内容感兴趣的读者可查阅本站专项论题:《PHP+MySQL留言板开荒专项论题》、《php缓存本事计算》、《PHP数组(Array)操作技艺大全》、《php字符串(string)用法计算》、《PHP错误与那么些处理办法总计》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技能汇总》

愈来愈多关于thinkPHP相关内容感兴趣的读者可查阅本站专项论题:《ThinkPHP入门教程》、《thinkPHP模板操作手艺总计》、《ThinkPHP常用艺术总计》、《smarty模板入门基础教程》及《PHP模板技能总括》。

切实选项可参照他事他说加以考察PHP中文手册

期望本文所述对大家PHP程序设计有所接济。

瞩望本文所述对大家基于ThinkPHP框架的PHP程序设计有着帮衬。

越来越多关于thinkPHP相关内容感兴趣的读者可查阅本站专项论题:《ThinkPHP入门教程》、《thinkPHP模板操作技术总计》、《ThinkPHP常用艺术总计》、《codeigniter入门教程》、《CI(CodeIgniter)框架进级教程》、《Zend
FrameWork框架入门教程》及《PHP模板本事总括》。

您或许感兴趣的作品:

  • php模块memcache和memcached分化深入分析
  • PHP Memcached应用达成代码
  • php扩大memcached和memcache的安装配置情势
  • PHP
    使用memcached轻松示例共享
  • PHP
    MemCached高档缓存配置图文化教育程
  • php的memcached客户端memcached
  • PHP MemCached
    高档缓存应用代码
  • php下Memcached入门实例剖判
  • php制作文本式留言板
  • php完成网址留言板功用
  • PHP结合Mysql数据库达成留言板成效
  • 根据thinkPHP框架完毕留言板的措施

你只怕感兴趣的篇章:

  • php模块memcache和memcached差别剖判
  • PHP Memcached应用完结代码
  • php扩充memcached和memcache的装置配备情势
  • PHP
    使用memcached简单示例分享
  • PHP
    MemCached高端缓存配置图像和文字化教育程
  • php的memcached客户端memcached
  • PHP MemCached
    高等缓存应用代码
  • php下Memcached入门实例深入分析
  • php制作文本式留言板
  • php完结网站留言板功效
  • PHP结合Mysql数据库实现留言板效用
  • php+Memcached达成轻巧留言板功效示例

但愿本文所述对大家基于ThinkPHP框架的PHP程序设计具备扶助。

您可能感兴趣的稿子:

  • thinkphp中memcache的用法实例
  • 修改ThinkPHP缓存为Memcache的方法
  • thinkPHP达成MemCache分布式缓存功效
  • ThinkPHP轻便利用memcache缓存的方法
  • thinkPHP多域人气象下使用memcache方式分享session数据的兑现格局
  • ThinkPHP实现一键清除缓存方法
  • thinkphp缓存本事详解
  • thinkphp的静态缓存用法剖判
  • 应用ThinkPHP中F方法完结高效缓存实例
  • ThinkPHP静态缓存轻便安插和行使方法详解
  • ThinkPHP完结静态缓存和动态缓存示例代码


相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图