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 相关文章推荐
基于mysql的论坛(3)
Oct 09 PHP
Discuz 模板引擎的封装类代码
Jul 18 PHP
php操作excel文件 基于phpexcel
Jul 02 PHP
linux下删除7天前日志的代码(php+shell)
Jan 02 PHP
ajax完美实现两个网页 分页功能的实例代码
Apr 16 PHP
php 解压rar文件及zip文件的方法
May 05 PHP
thinkphp文件处理类Dir.class.php的用法分析
Dec 08 PHP
linux中cd命令使用详解
Jan 08 PHP
php约瑟夫问题解决关于处死犯人的算法
Mar 23 PHP
PHP编程中尝试程序并发的几种方式总结
Mar 21 PHP
Laravel学习教程之request validation的编写
Oct 25 PHP
Thinkphp 在api开发中异常返回依然是html的解决方式
Oct 16 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
3种平台下安装php4经验点滴
2006/10/09 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
2017/03/15 PHP
Thinkphp开发--集成极光推送
2017/09/15 PHP
二行代码解决全部网页木马
2008/03/28 Javascript
一个网马的tips实现分析
2010/11/28 Javascript
jquery 倒计时效果实现秒杀思路
2013/09/11 Javascript
JavaScript控制按钮可用或不可用的方法
2015/04/03 Javascript
基于jQuery全屏焦点图左右切换插件responsiveslides
2015/09/07 Javascript
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
2017/05/20 jQuery
vue中倒计时组件的实例代码
2018/07/06 Javascript
微信小程序wxml列表渲染原理解析
2019/11/27 Javascript
手把手带你入门微信小程序新框架Kbone的使用
2020/02/25 Javascript
es6中new.target的作用和使用场景简单示例分析
2020/03/14 Javascript
解决vue2中使用elementUi打包报错的问题
2020/09/22 Javascript
mustache.js实现首页元件动态渲染的示例代码
2020/12/28 Javascript
Python文件读写常见用法总结
2019/02/22 Python
python中yield的用法详解——最简单,最清晰的解释
2019/04/04 Python
python networkx 包绘制复杂网络关系图的实现
2019/07/10 Python
Django 创建/删除用户的示例代码
2019/07/24 Python
Iconfont(矢量图标)+iconmoon(图标svg互转)配合javascript实现社交分享系统
2020/04/21 Python
DataFrame.groupby()所见的各种用法详解
2020/06/14 Python
Python3与fastdfs分布式文件系统如何实现交互
2020/06/23 Python
Python使用socket模块实现简单tcp通信
2020/08/18 Python
Java面试题:请问一下代码输出是什么
2015/05/27 面试题
小学生元旦感言
2014/02/26 职场文书
学生会副主席竞聘书
2014/03/31 职场文书
学习雷锋做美德少年寄语大全
2014/04/09 职场文书
爱情寄语大全
2014/04/09 职场文书
三月学雷锋月活动总结
2014/04/28 职场文书
村干部四风问题整改措施
2014/09/30 职场文书
团代会开幕词
2015/01/28 职场文书
社区活动总结范文
2015/05/07 职场文书
法定授权委托证明书
2015/06/18 职场文书
检举信的写法
2019/04/10 职场文书
JS数组去重详情
2021/11/07 Javascript
详解nginx安装过程并代理下载服务器文件
2022/02/12 Servers