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 相关文章推荐
Content-type 的说明
Oct 09 PHP
模仿OSO的论坛(四)
Oct 09 PHP
使用 php4 加速 web 传输
Oct 09 PHP
php设计模式 Bridge (桥接模式)
Jun 26 PHP
Mysql中分页查询的两个解决方法比较
May 02 PHP
php合并js请求的例子
Nov 01 PHP
ThinkPHP使用Smarty第三方插件方法小结
Mar 19 PHP
利用 fsockopen() 函数开放端口扫描器的实例
Aug 19 PHP
PHP实现获取毫秒时间戳的方法【使用microtime()函数】
Mar 01 PHP
Laravel Validator自定义错误返回提示消息并在前端展示
May 09 PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
Sep 09 PHP
PHP实现简单的协程任务调度demo示例
Feb 01 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
IIS下PHP连接数据库提示mysql undefined function mysql_connect()
2010/06/04 PHP
浅析php中抽象类和接口的概念以及区别
2013/06/27 PHP
destoon文章模块调用企业会员资料的方法
2014/08/22 PHP
php返回当前日期或者指定日期是周几
2015/05/21 PHP
10个超级有用的PHP代码片段果断收藏
2015/09/23 PHP
php获取手机端的号码以及ip地址实例代码
2018/09/12 PHP
指定js可访问其它域名的cookie的方法
2007/09/18 Javascript
JQuery 弹出框定位实现方法
2010/12/02 Javascript
自己动手手写jQuery插件总结
2015/01/20 Javascript
jQuery实现响应鼠标背景变化的动态菜单效果代码
2015/08/27 Javascript
关于数据与后端进行交流匹配(点亮星星)
2016/08/03 Javascript
AngularJS 面试题集锦
2016/09/06 Javascript
利用jquery给指定的table动态添加一行、删除一行的方法
2016/10/12 Javascript
angular实现表单验证及提交功能
2017/02/01 Javascript
vue+element-ui集成随机验证码+用户名+密码的form表单验证功能
2018/08/05 Javascript
微信小程序select下拉框实现源码
2019/11/08 Javascript
压缩Vue.js打包后的体积方法总结(Vue.js打包后体积过大问题)
2020/02/03 Javascript
JavaScript设计模式之策略模式实现原理详解
2020/05/29 Javascript
vue实现信息管理系统
2020/05/30 Javascript
js实现网页随机验证码
2020/10/19 Javascript
nuxt.js 在middleware(中间件)中实现路由鉴权操作
2020/11/06 Javascript
Python3.0与2.X版本的区别实例分析
2014/08/25 Python
Python连接SQLServer2000的方法详解
2017/04/19 Python
Python使用struct处理二进制的实例详解
2017/09/11 Python
python实现黑客字幕雨效果
2018/06/21 Python
Python datetime和unix时间戳之间相互转换的讲解
2019/04/01 Python
Python OpenCV利用笔记本摄像头实现人脸检测
2020/08/20 Python
python网络爬虫 Scrapy中selenium用法详解
2019/09/28 Python
Python在后台自动解压各种压缩文件的实现方法
2020/11/10 Python
详解CSS3 rem(设置字体大小) 教程
2017/11/21 HTML / CSS
美国顶级户外凉鞋品牌:Chacos
2017/03/27 全球购物
介绍一下如何利用路径遍历进行攻击及如何防范
2014/01/19 面试题
出纳员岗位责任制
2014/02/11 职场文书
安全伴我行演讲稿
2014/09/04 职场文书
2014县政府领导班子三严三实对照检查材料思想汇报
2014/09/26 职场文书
分享几个简单MySQL优化小妙招
2022/03/31 MySQL