当前位置:首页 > PHP教程 > php高级应用 > 列表

PHP memcache在微信公众平台的应用方法示例

发布:smiling 来源: PHP粉丝网  添加日期:2018-09-13 16:30:15 浏览: 评论:0 

本文实例讲述了PHP memcache在微信公众平台的应用方法。分享给大家供大家参考,具体如下:

现在微信公众平台大多数互动都是用户发送信息->微信分析并返回结果,这种模式功能比较单一。这里介绍另一种互动模式:用户发送信息->微信分析信息并提示下一步操作->用户发送信息->.......->微信返回结果。本文介绍运用sae里的memcache实现以上模式。

思路:

1、用户发送消息,微信会记录用户唯一的openid,将它的值赋予$fromUsername。

2、用memcache保存两个数据,一个为上一次用户发送的消息,另一个随便定义一个值(示例中为1),做判断用户动作之用。

3、用$fromUsername 作为key定位。

示例代码如下:

  1. <?php 
  2. /** 
  3.  * wechat php test 
  4.  */ 
  5. //调用mecache 
  6. $mc=memcache_init(); 
  7. //接受消息,直接用微信官方的示例代码 
  8. $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; 
  9.    if (!emptyempty($postStr)){ 
  10.    $postObj = simplexml_load_string($postStr'SimpleXMLElement', LIBXML_NOCDATA); 
  11.    $fromUsername = $postObj->FromUserName; 
  12.    $toUsername = $postObj->ToUserName; 
  13.    $keyword = trim($postObj->Content); 
  14.    $time = time(); 
  15.    $textTpl = "<xml> 
  16.           <ToUserName><![CDATA[%s]]></ToUserName> 
  17.           <FromUserName><![CDATA[%s]]></FromUserName> 
  18.           <CreateTime>%s</CreateTime> 
  19.           <MsgType><![CDATA[%s]]></MsgType> 
  20.           <Content><![CDATA[%s]]></Content> 
  21.           <FuncFlag>0</FuncFlag> 
  22.           </xml>"; 
  23.    //定义变量last_step,记录上一次动作 
  24.    $last_step=$mc->get($fromUsername."step"); 
  25.    //定义变量last_data,记录上一次数据 
  26.    $last_data=$mc->get($fromUsername."data"); 
  27.    if(!emptyempty$keyword )){ 
  28.     //判断用户动作 
  29.      if($last_step!=1){ 
  30.      //将用户输入的数据保存至memcache 
  31.      $mc->set($fromUsername."data",$keyword,0,120); 
  32.      //记录用户这一次动作,值设为1 
  33.      $mc->set($fromUsername."step",1,0,120); 
  34.      $msgType = "text"
  35.      $contentStr = "请再输入一个值:"
  36.      $resultStr = sprintf($textTpl$fromUsername$toUsername$time$msgType$contentStr); 
  37.     echo $resultStr
  38.     } else { 
  39.     //清空memcach动作 
  40.     $mc->delete($fromUsername."step"); 
  41.     //清空memcach数据 
  42.     $mc->delete($fromUsername."data"); 
  43.     $msgType = "text"
  44.     $contentStr = "你输入的第一个值为:".$last_data."\n 第二个值为:".$keyword
  45.     $resultStr = sprintf($textTpl$fromUsername$toUsername$time$msgType$contentStr); 
  46.     echo $resultStr
  47.     }//phpfensi.com 
  48.    } 
  49.   } else { 
  50.     echo ""
  51.   } 
  52. ?> 

Tags: 示例 公众 memcache

分享到: