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 OPCode缓存 APC详细介绍
Oct 12 PHP
《PHP编程最快明白》第三讲:php数组
Nov 01 PHP
win7计划任务定时执行PHP脚本设置图解
May 09 PHP
PHP读取大文件的几种方法介绍
Oct 27 PHP
php实现的网页版剪刀石头布游戏示例
Nov 25 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
Mar 15 PHP
php 使用curl模拟ip和来源进行访问的实现方法
May 02 PHP
PHP后端银联支付及退款实例代码
Jun 23 PHP
PHP堆栈调试操作简单示例
Jun 15 PHP
php源码的安装方法和实例
Sep 26 PHP
Laravel 修改默认日志文件名称和位置的例子
Oct 17 PHP
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
Mar 29 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下实现伪 url 的超简单方法[转]
2007/09/24 PHP
QueryPath PHP 中的jQuery
2010/04/11 PHP
CI(CodeIgniter)框架中的增删改查操作
2014/06/10 PHP
ThinkPHP在新浪SAE平台的部署实例
2014/10/31 PHP
thinkPHP实现递归循环栏目并按照树形结构无限极输出的方法
2016/05/19 PHP
使用composer命令加载vendor中的第三方类库 的方法
2019/07/09 PHP
取选中的radio的值
2010/01/11 Javascript
Jquery使用Firefox FireBug插件调试Ajax步骤讲解
2013/12/02 Javascript
有效提高JavaScript执行效率的几点知识
2015/01/31 Javascript
javascript常用正则表达式汇总
2015/07/31 Javascript
Javascript typeof与instanceof的区别
2016/10/18 Javascript
基于js实现的限制文本框只可以输入数字
2016/12/05 Javascript
jQuery分页插件jquery.pagination.js使用方法解析
2017/02/09 Javascript
jQuery基于Ajax方式提交表单功能示例
2017/02/10 Javascript
vue-cli+webpack在生成的项目中使用bootstrap实例代码
2017/05/26 Javascript
nodejs接入阿里大鱼短信验证码的方法
2017/07/10 NodeJs
详细AngularJs4的图片剪裁组件的实例
2017/07/12 Javascript
angularjs实现过滤并替换关键字小功能
2017/09/19 Javascript
详解微信小程序调起键盘性能优化
2018/07/24 Javascript
详解Vue调用手机相机和相册以及上传
2019/05/05 Javascript
node.js处理前端提交的GET请求
2019/08/30 Javascript
layui radio点击事件实现input显示和隐藏的例子
2019/09/02 Javascript
通过javascript实现扫雷游戏代码实例
2020/02/09 Javascript
Python导出数据到Excel可读取的CSV文件的方法
2015/05/12 Python
python安装与使用redis的方法
2016/04/19 Python
详解Python异常处理中的Finally else的功能
2017/12/29 Python
python实现将读入的多维list转为一维list的方法
2018/06/28 Python
Python logging模块用法示例
2018/08/28 Python
python 实现12bit灰度图像映射到8bit显示的方法
2019/07/08 Python
基于Python2、Python3中reload()的不同用法介绍
2019/08/12 Python
使用opencv将视频帧转成图片输出
2019/12/10 Python
快速实现一个简单的canvas迷宫游戏的示例
2018/07/04 HTML / CSS
香港连卡佛百货官网:Lane Crawford
2019/09/04 全球购物
俄罗斯极限运动网上商店:Board Shop №1
2020/12/18 全球购物
小学语文新课改心得体会
2016/01/22 职场文书
如何用PHP实现多线程编程
2021/05/26 PHP