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 相关文章推荐
PHP4实际应用经验篇(9)
Oct 09 PHP
PHP 简单数组排序实现代码
Aug 05 PHP
php set_time_limit(0) 设置程序执行时间的函数
May 26 PHP
phpmyadmin里面导入sql语句格式的大量数据的方法
Jun 05 PHP
php数组函数序列之array_values() 获取数组元素值的函数与方法
Oct 30 PHP
控制PHP的输出:缓存并压缩动态页面
Jun 11 PHP
PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例
Aug 17 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
Mar 17 PHP
PHP多进程编程总结(推荐)
Jul 18 PHP
php变量与数组相互转换的方法(extract与compact)
Dec 02 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 PHP
实例讲解PHP验证邮箱是否合格
Jan 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&amp;mysql(五)
2006/10/09 PHP
信用卡效验程序
2006/10/09 PHP
《PHP边学边教》(02.Apache+PHP环境配置――下篇)
2006/12/13 PHP
PHP面试常用算法(推荐)
2016/07/22 PHP
php array_merge_recursive 数组合并
2016/10/26 PHP
php使用Jpgraph创建3D饼形图效果示例
2017/02/15 PHP
php 后端实现JWT认证方法示例
2018/09/04 PHP
慎用 somefunction.prototype 分析
2009/06/02 Javascript
document.createElement()用法
2013/03/13 Javascript
js去除空格的12种实用方法
2013/11/08 Javascript
JavaScript组合拼接字符串的效率对比测试
2014/11/06 Javascript
JavaScript实现网页加载进度条代码超简单
2015/09/21 Javascript
基于jquery编写分页插件
2016/03/07 Javascript
AngularJS入门教程之 XMLHttpRequest实例讲解
2016/07/27 Javascript
jquery实现图片平滑滚动详解
2017/03/22 jQuery
vue.js实现刷新当前页面的方法教程
2017/07/05 Javascript
react-native 封装选择弹出框示例(试用ios&amp;android)
2017/07/11 Javascript
详解javascript 正则表达式之分组与前瞻匹配
2018/05/30 Javascript
JavaScript中set与get方法用法示例
2018/08/15 Javascript
react 兄弟组件如何调用对方的方法示例
2018/10/23 Javascript
three.js实现炫酷的全景3D重力感应
2018/12/30 Javascript
微信小程序中使用echarts的实现方法
2019/04/24 Javascript
微信小程序上传帖子的实例代码(含有文字图片的微信验证)
2020/07/11 Javascript
js闭包的9个使用场景
2020/12/29 Javascript
python通过zlib实现压缩与解压字符串的方法
2014/11/19 Python
详解python函数传参是传值还是传引用
2018/01/16 Python
Python之Class&amp;Object用法详解
2019/12/25 Python
Python连接Mysql进行增删改查的示例代码
2020/08/03 Python
PyTorch如何搭建一个简单的网络
2020/08/24 Python
Python+unittest+requests 接口自动化测试框架搭建教程
2020/10/09 Python
《狐假虎威》教学反思
2014/02/07 职场文书
2015新学期校长寄语(3篇)
2015/03/25 职场文书
认识实习感想
2015/08/10 职场文书
python基于OpenCV模板匹配识别图片中的数字
2021/03/31 Python
深入探讨opencv图像矫正算法实战
2021/05/21 Python
MySQL表锁、行锁、排它锁及共享锁的使用详解
2022/04/02 MySQL