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 远程关机实现代码
Nov 10 PHP
php读取javascript设置的cookies的代码
Apr 12 PHP
PHP操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)
Nov 10 PHP
CodeIgniter使用phpcms模板引擎
Nov 12 PHP
linux使用crontab实现PHP执行计划定时任务
May 10 PHP
CodeIgniter实现更改view文件夹路径的方法
Jul 04 PHP
一个非常完美的读写ini格式的PHP配置类分享
Feb 12 PHP
php cli配置文件问题分析
Oct 15 PHP
教大家制作简单的php日历
Nov 17 PHP
Symfony的安装和配置方法
Mar 17 PHP
php实现等比例不失真缩放上传图片的方法
Nov 14 PHP
THINKPHP5分页数据对象处理过程解析
Oct 28 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自动生成月历代码
2006/10/09 PHP
php正则过滤html标签、空格、换行符的代码(附说明)
2010/10/25 PHP
部署PHP项目应该注意的几点事项分享
2013/12/20 PHP
PHP中feof()函数实例测试
2014/08/23 PHP
Yii多表联合查询操作详解
2016/06/02 PHP
php执行多个存储过程的方法【基于thinkPHP】
2016/11/08 PHP
JavaScript修改css样式style
2008/04/15 Javascript
给artDialog 5.02 增加ajax get功能详细介绍
2012/11/13 Javascript
Javascript简单实现可拖动的div
2013/10/22 Javascript
自己动手手写jQuery插件总结
2015/01/20 Javascript
javascript 中的 delete及delete运算符
2015/11/15 Javascript
js+css实现回到顶部按钮(back to top)
2016/03/02 Javascript
VUE使用vuex解决模块间传值问题的方法
2017/06/01 Javascript
解决vue打包项目后刷新404的问题
2018/03/06 Javascript
Vue filter格式化时间戳时间成标准日期格式的方法
2018/09/16 Javascript
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
2019/05/12 jQuery
javascript使用substring实现的展开与收缩文字功能示例
2019/06/17 Javascript
node.js中Buffer缓冲器的原理与使用方法分析
2019/11/23 Javascript
[01:08:44]NB vs VP 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python算法应用实战之队列详解
2017/02/04 Python
用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os)
2020/06/04 Python
python 中关于pycharm选择运行环境的问题
2020/10/31 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
2021/02/22 Python
Easy Spirit官网:美国休闲鞋履中的代表品牌
2019/04/12 全球购物
亚马逊意大利站点:Amazon.it
2020/12/31 全球购物
财务助理岗位职责
2013/11/10 职场文书
编辑找工作求职信范文
2013/12/16 职场文书
经销商培训邀请函
2014/01/21 职场文书
小学岗位竞聘方案
2014/01/22 职场文书
总会计师岗位职责
2014/02/19 职场文书
党的群众路线教育实践活动组织生活会发言材料
2014/10/17 职场文书
单位租房协议书样本
2014/10/30 职场文书
2015年村党支部工作总结
2015/04/30 职场文书
2016大学生形势与政策心得体会
2016/01/12 职场文书
java设计模式--三种工厂模式详解
2021/07/21 Java/Android
Java实战之课程信息管理系统的实现
2022/04/01 Java/Android