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 抓取新浪读书频道的小说并生成txt电子书的代码
Dec 18 PHP
一道求$b相对于$a的相对路径的php代码
Aug 08 PHP
Yii使用find findAll查找出指定字段的实现方法
Sep 05 PHP
常用PHP框架功能对照表
Oct 23 PHP
ThinkPHP查询语句与关联查询用法实例
Nov 01 PHP
WebQQ最新登陆协议的用法
Dec 22 PHP
PHP+ajax分页实例简析
Dec 07 PHP
PHP strcmp()和strcasecmp()的区别实例
Nov 05 PHP
PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】
Oct 07 PHP
使用PHPExcel导出Excel表
Sep 08 PHP
PHP实现PDO操作mysql存储过程示例
Feb 13 PHP
laravel excel 上传文件保存到本地服务器功能
Nov 14 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
PHP中ob_start函数的使用说明
2013/11/11 PHP
ThinkPHP缓存方法S()概述
2014/06/13 PHP
Laravel5.0+框架邮件发送功能实现方法图文与实例详解
2019/04/23 PHP
Jquery 动态添加按钮实现代码
2010/05/06 Javascript
javascript转换字符串为dom对象(字符串动态创建dom)
2010/05/10 Javascript
基于jquery的分页控件(C#)
2011/01/06 Javascript
日历查询的算法 如何计算某一天是星期几
2012/12/12 Javascript
单击复制文字兼容各浏览器的完美解决方案
2013/07/04 Javascript
jquery.post用法关于type设置问题补充
2014/01/03 Javascript
js加入收藏夹代码(兼容ie/ff/op)
2014/05/16 Javascript
jQuery动态修改超链接地址的方法
2015/02/13 Javascript
JS实现控制表格内指定单元格内容对齐的方法
2015/03/30 Javascript
Ajax清除浏览器js、css、图片缓存的方法
2015/08/06 Javascript
微信小程序之页面跳转和参数传递的实现
2017/09/29 Javascript
浅谈vue中使用图片懒加载vue-lazyload插件详细指南
2017/10/23 Javascript
如何把vuejs打包出来的文件整合到springboot里
2018/07/26 Javascript
Javascript格式化并高亮xml字符串的方法及注意事项
2018/08/13 Javascript
开发中常用的25个JavaScript单行代码(小结)
2019/06/28 Javascript
微信小程序页面上下滚动效果
2020/11/18 Javascript
微信小程序可滑动月日历组件使用详解
2019/10/21 Javascript
vue中上传视频或图片或图片和文字一起到后端的解决方法
2019/12/01 Javascript
使用python提取html文件中的特定数据的实现代码
2013/03/24 Python
python统计文本文件内单词数量的方法
2015/05/30 Python
Python的Django框架中的Context使用
2015/07/15 Python
python 查找字符串是否存在实例详解
2017/01/20 Python
基于Python的文件类型和字符串详解
2017/12/21 Python
python爬虫之快速对js内容进行破解
2019/07/09 Python
Python实现微信翻译机器人的方法
2019/08/13 Python
python实现矩阵和array数组之间的转换
2019/11/29 Python
绿色美容,有机护肤品和化妆品:Safe & Chic
2018/10/29 全球购物
李维斯牛仔裤荷兰官方网站:Levi’s NL
2020/08/23 全球购物
Linux面试经常问的文件系统操作命令
2015/11/05 面试题
孝敬父母的演讲稿
2014/05/14 职场文书
公司离职证明范本(汇总)
2014/09/10 职场文书
常务副县长“三严三实”对照检查材料思想汇报
2014/10/05 职场文书
SQL中的连接查询详解
2022/06/21 SQL Server