PHP memcache在微信公众平台的应用方法示例


Posted in PHP onSeptember 13, 2017

本文实例讲述了PHP memcache在微信公众平台的应用方法。分享给大家供大家参考,具体如下:

现在微信公众平台大多数互动都是用户发送信息->微信分析并返回结果,这种模式功能比较单一。这里介绍另一种互动模式:用户发送信息->微信分析信息并提示下一步操作->用户发送信息->.......->微信返回结果。本文介绍运用sae里的memcache实现以上模式。

思路:

1、用户发送消息,微信会记录用户唯一的openid,将它的值赋予$fromUsername。

2、用memcache保存两个数据,一个为上一次用户发送的消息,另一个随便定义一个值(示例中为1),做判断用户动作之用。

3、用$fromUsername 作为key定位。

示例代码如下:

<?php
/**
 * wechat php test
 */
//调用mecache
$mc=memcache_init();
//接受消息,直接用微信官方的示例代码
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
   if (!empty($postStr)){
   $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
   $fromUsername = $postObj->FromUserName;
   $toUsername = $postObj->ToUserName;
   $keyword = trim($postObj->Content);
   $time = time();
   $textTpl = "<xml>
          <ToUserName><![CDATA[%s]]></ToUserName>
          <FromUserName><![CDATA[%s]]></FromUserName>
          <CreateTime>%s</CreateTime>
          <MsgType><![CDATA[%s]]></MsgType>
          <Content><![CDATA[%s]]></Content>
          <FuncFlag>0</FuncFlag>
          </xml>";
   //定义变量last_step,记录上一次动作
   $last_step=$mc->get($fromUsername."step");
   //定义变量last_data,记录上一次数据
   $last_data=$mc->get($fromUsername."data");
   if(!empty( $keyword )){
    //判断用户动作
     if($last_step!=1){
     //将用户输入的数据保存至memcache
     $mc->set($fromUsername."data",$keyword,0,120);
     //记录用户这一次动作,值设为1
     $mc->set($fromUsername."step",1,0,120);
     $msgType = "text";
     $contentStr = "请再输入一个值:";
     $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
    echo $resultStr;
    } else {
    //清空memcach动作
    $mc->delete($fromUsername."step");
    //清空memcach数据
    $mc->delete($fromUsername."data");
    $msgType = "text";
    $contentStr = "你输入的第一个值为:".$last_data."\n 第二个值为:".$keyword;
    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
    echo $resultStr;
    }
   }
  } else {
    echo "";
  }
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php下mysql数据库操作类(改自discuz)
Jul 03 PHP
使用cookie实现统计访问者登陆次数
Jun 08 PHP
浅析php中jsonp的跨域实例
Jun 21 PHP
PHP生成自适应大小的缩略图类及使用方法分享
May 06 PHP
一个简单的PHP验证码实现代码
May 10 PHP
PHP实现简单实用的分页类代码
Apr 08 PHP
Thinkphp框架开发移动端接口(2)
Aug 18 PHP
PHP基于PDO实现的SQLite操作类【包含增删改查及事务等操作】
Jun 21 PHP
PHP中实现中文字串截取无乱码的解决方法
May 29 PHP
PHP PDOStatement::nextRowset讲解
Feb 01 PHP
php写入文件不覆盖的实例讲解
Sep 17 PHP
Laravel 错误提示本地化的实现
Oct 22 PHP
深入解析Laravel5.5中的包自动发现Package Auto Discovery
Sep 13 #PHP
PHP 实现公历日期与农历日期的互转换
Sep 13 #PHP
php生成条形码的图片的实例详解
Sep 13 #PHP
php之可变函数的实例详解
Sep 13 #PHP
PHP实现一个多功能购物网站的案例
Sep 13 #PHP
php之可变变量的实例详解
Sep 12 #PHP
PHP清除缓存的几种方法总结
Sep 12 #PHP
You might like
destoon整合UCenter图文教程
2014/06/21 PHP
php实现SAE上使用storage上传与下载文件的方法
2015/06/29 PHP
PHP二进制与字符串之间的相互转换教程
2016/10/14 PHP
PHP表单验证内容是否为空的实现代码
2016/11/14 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
漂亮的widgets,支持换肤和后期开发新皮肤(2007-4-27已更新1.7alpha)
2007/04/27 Javascript
jQuery 验证插件 Web前端设计模式(asp.net)
2010/10/17 Javascript
js中top的作用深入剖析
2014/03/04 Javascript
JS中捕获console.log()输出的方法
2015/04/16 Javascript
图文详解Heap Sort堆排序算法及JavaScript的代码实现
2016/05/04 Javascript
深入解析Backbone.js框架的依赖库Underscore.js的作用
2016/05/07 Javascript
jQuery 利用$.ajax 时获取原生XMLHttpRequest 对象的方法
2016/08/25 Javascript
理解javascript中的Function.prototype.bind的方法
2017/02/03 Javascript
浅谈pc端rem字体设置的问题
2017/08/03 Javascript
在HTML文档中嵌入JavaScript的四种方法
2018/05/07 Javascript
javascript实现考勤日历功能
2018/11/29 Javascript
详解nodejs 开发企业微信第三方应用入门教程
2019/03/12 NodeJs
vue学习笔记之slot插槽基本用法实例分析
2020/02/01 Javascript
js实现简单抽奖功能
2020/11/24 Javascript
Python分治法定义与应用实例详解
2017/07/28 Python
Python实现识别手写数字 Python图片读入与处理
2020/03/23 Python
Pytorch模型转onnx模型实例
2020/01/15 Python
Python使用Paramiko控制liunx第三方库
2020/05/20 Python
MSC邮轮官方网站:加勒比海、地中海和世界各地的假期
2018/08/27 全球购物
英文版区域经理求职信
2013/10/23 职场文书
轻金属冶金专业毕业生自荐信
2013/11/02 职场文书
优秀管理者事迹材料
2014/05/22 职场文书
维修工先进事迹
2014/05/29 职场文书
小区推广策划方案
2014/06/06 职场文书
教师工作总结范文2014
2014/11/10 职场文书
2015毕业生实习工作总结
2014/12/12 职场文书
学前班幼儿评语大全
2014/12/29 职场文书
土建施工员岗位职责
2015/04/11 职场文书
会议主持词开场白
2015/05/28 职场文书
Python中基础数据类型 set集合知识点总结
2021/08/02 Python
CSS中妙用 drop-shadow 实现线条光影效果
2021/11/11 HTML / CSS