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.MVC的模板标签系统(三)
Sep 05 PHP
Mysql的GROUP_CONCAT()函数使用方法
Mar 28 PHP
简单的PHP留言本实例代码
May 09 PHP
php 数组动态添加实现代码(最土团购系统的价格排序)
Dec 30 PHP
采集邮箱的php代码(抓取网页中的邮箱地址)
Jul 17 PHP
刷新PHP缓冲区为你的站点加速
Oct 10 PHP
PHP文件上传类实例详解
Apr 08 PHP
PHP实现上传图片到数据库并显示输出的方法
May 31 PHP
PHP操作路由器实现方法示例
Apr 27 PHP
PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】
Sep 10 PHP
Laravel5.1 框架表单验证操作实例详解
Jan 07 PHP
详解PHP中的8个魔术常量
Jul 06 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
CPU步进是什么意思?i3-9100F B0步进和U0步进区别知识科普
2020/03/17 数码科技
Js的MessageBox
2006/12/03 Javascript
Jquery异步提交表单代码分享
2015/03/26 Javascript
JavaScript中setUTCFullYear()方法的使用简介
2015/06/12 Javascript
全屏js头像上传插件源码高清版
2016/03/29 Javascript
ajax跨域调用webservice的实现代码
2016/05/09 Javascript
Javascript表单特效之十大常用原理性样例代码大总结
2016/07/12 Javascript
jQuery实现可兼容IE6的淡入淡出效果告警提示功能示例
2017/09/20 jQuery
javascript基本常用排序算法解析
2017/09/27 Javascript
jQuery中extend函数简单用法示例
2017/10/11 jQuery
JS脚本加载后执行相应回调函数的操作方法
2018/02/28 Javascript
微信网页登录逻辑与实现方法
2019/04/29 Javascript
vue 2.5.1 源码学习 之Vue.extend 和 data的合并策略
2019/06/04 Javascript
浅谈Three.js截图并下载的大坑
2019/11/01 Javascript
[53:15]Newbee vs Pain 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python实现按当前日期(年、月、日)创建多级目录的方法
2018/04/26 Python
pytorch torch.expand和torch.repeat的区别详解
2019/11/05 Python
python时间日期操作方法实例小结
2020/02/06 Python
tensorflow 报错unitialized value的解决方法
2020/02/06 Python
Django model重写save方法及update踩坑详解
2020/07/27 Python
python中的yield from语法快速学习
2020/11/06 Python
魔声耳机官方网站:Monster是世界第一品牌的高性能耳机
2016/10/26 全球购物
SQL Server提供的3种恢复模型都是什么? 有什么区别?
2012/05/13 面试题
计算机应用与科学个人的自我评价
2013/11/15 职场文书
学习决心书
2014/03/11 职场文书
房产委托公证书样本
2014/04/04 职场文书
优秀高中学生评语
2014/12/30 职场文书
同学毕业留言寄语
2015/02/27 职场文书
企业财务经理岗位职责
2015/04/08 职场文书
复兴之路观后感3000字
2015/06/02 职场文书
2019最新企业员工考勤管理制度(通用版)!
2019/07/02 职场文书
创业计划书详解
2019/07/19 职场文书
李清照的诗词赏析(20首)
2019/08/22 职场文书
python基于tkinter制作下班倒计时工具
2021/04/28 Python
idea下配置tomcat避坑详解
2022/04/12 Servers
阿里云ECS云服务器快照的概念以及如何使用
2022/04/21 Servers