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 相关文章推荐
实用函数8
Nov 08 PHP
深入解析PHP内存管理之谁动了我的内存
Jun 20 PHP
php生成静态页面的简单示例
Apr 17 PHP
php一个解析字符串排列数组的方法
May 12 PHP
yii数据库的查询方法
Dec 28 PHP
PHP常用设计模式之委托设计模式
Feb 13 PHP
PHP实现数组array转换成xml的方法
Jul 19 PHP
PHP策略模式定义与用法示例
Jul 27 PHP
SCP远程VPS快速搬家和WDCP升级php5.3安装memcached和eaccelerator教程
Jul 27 PHP
visual studio code 调试php方法(图文详解)
Sep 15 PHP
PHP实现的简单留言板功能示例【基于thinkPHP框架】
Dec 07 PHP
微信公众平台开发教程⑤ 微信扫码支付模式介绍
Apr 10 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
zf框架db类的分页示例分享
2014/03/14 PHP
基于PHP的简单采集数据入库程序【续篇】
2014/07/30 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
php DES加密算法实例分析
2019/09/18 PHP
laravel接管Dingo-api和默认的错误处理方式
2019/10/25 PHP
PHP优化之批量操作MySQL实例分析
2020/04/23 PHP
onsubmit阻止form表单提交与onclick的相关操作
2010/09/03 Javascript
indexOf 和 lastIndexOf 使用示例介绍
2014/09/02 Javascript
Bootstrap媒体对象的实现
2016/05/01 Javascript
easyui form validate总是返回false的原因及解决方法
2016/11/07 Javascript
Vue项目中引入外部文件的方法(css、js、less)
2017/07/24 Javascript
AngularJS 购物车全选/取消全选功能的实现方法
2017/08/14 Javascript
javascript 日期相减-在线教程(附代码)
2017/08/17 Javascript
深入理解与使用keep-alive(配合router-view缓存整个路由页面)
2018/09/25 Javascript
微信小程序动画组件使用解析,类似vue,且更强大
2019/08/01 Javascript
JavaScript页面加载事件实例讲解
2019/09/01 Javascript
layui 数据表格 点击分页按钮 监听事件的实例
2019/09/02 Javascript
nodejs开发一个最简单的web服务器实例讲解
2020/01/02 NodeJs
VUE异步更新DOM - 用$nextTick解决DOM视图的问题
2020/11/06 Javascript
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
2021/01/22 Vue.js
[46:53]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
在Django中限制已登录用户的访问的方法
2015/07/23 Python
Python操作SQLite数据库的方法详解
2017/06/16 Python
python实现八大排序算法(2)
2017/09/14 Python
Python最火、R极具潜力 2017机器学习调查报告
2017/12/11 Python
Python面向对象类的继承实例详解
2018/06/27 Python
深入浅析Python2.x和3.x版本的主要区别
2018/11/30 Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
2018/12/17 Python
Python 多维List创建的问题小结
2019/01/18 Python
关于Pycharm无法debug问题的总结
2019/01/19 Python
Python socket实现多对多全双工通信的方法
2019/02/13 Python
python实现对图片进行旋转,放缩,裁剪的功能
2019/08/07 Python
复化梯形求积分实例——用Python进行数值计算
2019/11/20 Python
大学本科毕业生求职信范文
2013/12/18 职场文书
书法培训心得体会
2014/01/05 职场文书
python文本处理的方案(结巴分词并去除符号)
2021/05/26 Python