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 相关文章推荐
第三节 定义一个类 [3]
Oct 09 PHP
php5 mysql分页实例代码
Apr 10 PHP
优化PHP程序的方法小结
Feb 23 PHP
mysql 查询指定日期时间内sql语句实现原理与代码
Dec 16 PHP
destoon实现调用当前栏目分类及子分类和三级分类的方法
Aug 21 PHP
php实现的发送带附件邮件类实例
Sep 22 PHP
制作安全性高的PHP网站的几个实用要点
Dec 30 PHP
PHP strtotime函数用法、实现原理和源码分析
Feb 04 PHP
Laravel 5框架学习之向视图传送数据
Apr 08 PHP
ThinkPHP框架安全实现分析
Mar 14 PHP
apache php mysql开发环境安装教程
Jul 28 PHP
laravel框架之数据库查出来的对象实现转化为数组
Oct 23 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
玩转虚拟域名◎+ .
2006/10/09 PHP
社区(php&amp;&amp;mysql)四
2006/10/09 PHP
php列出mysql表所有行和列的方法
2015/03/13 PHP
Laravel开启跨域请求的方法
2019/10/13 PHP
js实现继承的5种方式
2015/12/01 Javascript
Ajax 加载数据 练习代码
2017/01/05 Javascript
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
2017/06/09 jQuery
原生js jquery ajax请求以及jsonp的调用方法
2017/08/04 jQuery
React props和state属性的具体使用方法
2018/04/12 Javascript
解决bootstrap模态框数据缓存的问题方法
2018/08/10 Javascript
JavaScript中工厂函数与构造函数示例详解
2019/05/06 Javascript
js图数据结构处理 迪杰斯特拉算法代码实例
2019/09/11 Javascript
在 Vue 中编写 SVG 图标组件的方法
2020/02/24 Javascript
在elementui中Notification组件添加点击事件实例
2020/11/11 Javascript
[02:30]辉夜杯主赛事第二日胜者组半决赛 CDEC.Y赛后采访
2015/12/26 DOTA
跟老齐学Python之画圈还不简单吗?
2014/09/20 Python
python中的编码知识整理汇总
2016/01/26 Python
python实现读取并显示图片的两种方法
2017/01/13 Python
python机器学习之随机森林(七)
2018/03/26 Python
python制作mysql数据迁移脚本
2019/01/01 Python
Python3.7 dataclass使用指南小结
2019/02/22 Python
Python数据结构与算法(几种排序)小结
2019/06/22 Python
pytorch .detach() .detach_() 和 .data用于切断反向传播的实现
2019/12/27 Python
Python importlib模块重载使用方法详解
2020/10/13 Python
Python Web项目Cherrypy使用方法镜像
2020/11/05 Python
详解html5 canvas 微信海报分享(个人爬坑)
2018/01/12 HTML / CSS
1688平价精选商城:阿里集团旗下,工厂出厂价格直销
2017/04/24 全球购物
什么是抽象
2015/12/13 面试题
车间主管岗位职责
2013/11/14 职场文书
大学生个人自我鉴定
2013/12/03 职场文书
环保倡议书格式范文
2014/05/14 职场文书
校长竞聘演讲稿
2014/05/16 职场文书
警察群众路线对照检查材料思想汇报
2014/10/01 职场文书
小学师德师风整改措施
2014/10/27 职场文书
群众路线教育实践活动学习笔记内容
2014/11/06 职场文书
2015年重阳节慰问信
2015/03/23 职场文书