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.ini 中文版
Oct 28 PHP
php获取网页内容方法总结
Dec 04 PHP
mayfish 数据入库验证代码
Apr 30 PHP
zend framework多模块多布局配置
Feb 26 PHP
PHP利用REFERER根居访问来地址进行页面跳转
Sep 28 PHP
php中数据库连接方式pdo和mysqli对比分析
Feb 25 PHP
Yii2.0表关联查询实例分析
Jul 18 PHP
PHP+Ajax无刷新带进度条图片上传示例
Feb 08 PHP
PHP实现的下载远程文件类定义与用法示例
Jul 05 PHP
PHP简单实现二维数组的矩阵转置操作示例
Nov 24 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
Feb 06 PHP
PHP实现二维数组中的查找算法小结
Jun 09 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 生成随机验证码图片代码
2010/02/08 PHP
PHP安全配置详细说明
2011/09/26 PHP
基于PHP对XML的操作详解
2013/06/07 PHP
30个php操作redis常用方法代码例子
2014/07/05 PHP
php实现的支持imagemagick及gd库两种处理的缩略图生成类
2014/09/23 PHP
laravel学习教程之存取器
2016/07/30 PHP
php中html_entity_decode实现HTML实体转义
2018/06/13 PHP
php使用curl模拟浏览器表单上传文件或者图片的方法
2018/11/10 PHP
Prototype使用指南之form.js
2007/01/10 Javascript
JS版网站风格切换实例代码
2008/10/06 Javascript
jquery(hide方法)隐藏指定元素实例
2013/11/11 Javascript
jquery改变disabled的boolean状态的三种方法
2013/12/13 Javascript
js确认删除对话框效果的示例代码
2014/02/20 Javascript
js精美的幻灯片画集特效代码分享
2015/08/29 Javascript
jquery事件的ready()方法使用详解
2015/11/11 Javascript
浅谈angular.copy() 深拷贝
2017/09/14 Javascript
vue-cli2 构建速度优化的实现方法
2019/01/08 Javascript
Vue利用localStorage本地缓存使页面刷新验证码不清零功能的实现
2020/09/04 Javascript
快速解决vue2+vue-cli3项目ie兼容的问题
2020/11/17 Vue.js
Python实现从log日志中提取ip的方法【正则提取】
2018/03/31 Python
Python Tkinter模块 GUI 可视化实例
2019/11/20 Python
python开发前景如何
2020/06/11 Python
python如何实现word批量转HTML
2020/09/30 Python
Python读取ini配置文件传参的简单示例
2021/01/05 Python
html5使用canvas画一条线
2014/12/15 HTML / CSS
Paradox London官方网站:英国新娘鞋婚礼鞋品牌
2019/08/29 全球购物
加拿大在线隐形眼镜和眼镜店:VisionPros
2019/10/06 全球购物
Michael Kors澳大利亚官网:世界知名的奢侈饰品和成衣设计师
2020/02/13 全球购物
20岁生日感言
2014/01/13 职场文书
学雷锋活动总结报告
2014/06/26 职场文书
人事聘任通知
2015/04/21 职场文书
毕业生爱心捐书倡议书
2015/04/27 职场文书
2016党员党课心得体会
2016/01/07 职场文书
《坐井观天》教学反思
2016/02/18 职场文书
MySQL创建索引需要了解的
2021/04/08 MySQL
Mysql效率优化定位较低sql的两种方式
2021/05/26 MySQL