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 session有效期问题
Apr 26 PHP
php 购物车的例子
May 04 PHP
php 随机排序广告的实现代码
May 09 PHP
PHP动态创建Web站点的方法
Aug 14 PHP
php 无法加载mysql的module的时候的配置的解决方案引发的思考
Jan 27 PHP
PHP提示Notice: Undefined variable的解决办法
Nov 24 PHP
thinkphp 多表 事务详解
Jun 17 PHP
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
Jun 19 PHP
php自动加载autoload机制示例分享
Feb 20 PHP
PHP 验证登陆类分享
Mar 13 PHP
PHP实现的redis主从数据库状态检测功能示例
Jul 20 PHP
lnmp安装多版本PHP共存的方法详解
Aug 02 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
Google Voice 短信发送接口PHP开源版(2010.5更新)
2010/07/22 PHP
PHP设计模式之责任链模式的深入解析
2013/06/13 PHP
PHP中的事务使用实例
2015/05/26 PHP
PHP实现Google plus的好友拖拽分组效果
2016/10/21 PHP
js异常捕获方法介绍
2013/04/10 Javascript
使用js解决由border属性引起的div宽度问题
2013/11/26 Javascript
jquery each的几种常用的使用方法示例
2014/01/21 Javascript
深入浅出分析javaScript中this用法
2015/05/09 Javascript
mvc中form表单提交的三种方式(推荐)
2016/08/10 Javascript
bootstrap中的 form表单属性role=&quot;form&quot;的作用详解
2017/01/20 Javascript
Angular之jwt令牌身份验证的实现
2020/02/14 Javascript
JS实现烟花爆炸效果
2020/03/10 Javascript
js根据后缀判断文件文件类型的代码
2020/05/09 Javascript
[01:15:12]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#4Newbee VS CDEC
2016/03/03 DOTA
Python如何获取系统iops示例代码
2016/09/06 Python
详解python单元测试框架unittest
2018/07/02 Python
python datetime中strptime用法详解
2019/08/29 Python
pygame实现俄罗斯方块游戏(对战篇1)
2019/10/29 Python
使用Python函数进行模块化的实现
2019/11/15 Python
python Manager 之dict KeyError问题的解决
2019/12/21 Python
pycharm双击无响应(打不开问题解决办法)
2020/01/10 Python
完美解决pycharm 不显示代码提示问题
2020/06/02 Python
CSS3感应鼠标的背景闪烁和图片缩放动画效果
2014/05/14 HTML / CSS
极简的HTML5模版
2015/07/09 HTML / CSS
英国网上香水店:Fragrance Direct
2016/07/20 全球购物
英国乐购杂货:Tesco Groceries
2018/11/29 全球购物
前台文员岗位职责及工作流程
2013/11/19 职场文书
项目资料员岗位职责
2013/12/10 职场文书
幼儿园教师辞职信
2014/01/18 职场文书
2015年中秋晚会主持词
2015/07/01 职场文书
团队合作精神学习心得体会
2016/01/19 职场文书
教您:房贷工资收入证明应该怎么写?
2019/08/19 职场文书
原生Js 实现的简单无缝滚动轮播图的示例代码
2021/05/10 Javascript
pytorch MSELoss计算平均的实现方法
2021/05/12 Python
Ruby处理YAML和json数据
2022/04/18 Ruby
HTML实现仿Windows桌面主题特效的实现
2022/06/28 HTML / CSS