61581229 发表于 2015-11-18 10:04:10

memcache在微信公众平台的运用

现在微信公众平台大多数互动都是用户发送信息->微信分析并返回结果,这种模式功能比较单一。这里介绍另一种互动模式:用户发送信息->微信分析信息并提示下一步操作->用户发送信息->.......->微信返回结果。本帖介绍运用sae里的memcache实现以上模式。思路:1、用户发送消息,微信会记录用户唯一的openid,将它的值赋予$fromUsername。

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

          3、用$fromUsername 作为key定位。
  示例代码如下:
  

<?php
/**
* wechat php test
*/
//调用mecache
$mc=memcache_init();
//接受消息,直接用微信官方的示例代码
$postStr = $GLOBALS[&quot;HTTP_RAW_POST_DATA&quot;];
      if (!empty($postStr)){
      $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
      $fromUsername = $postObj->FromUserName;
      $toUsername = $postObj->ToUserName;
      $keyword = trim($postObj->Content);
      $time = time();
      $textTpl = &quot;<xml>
                  <ToUserName><!]></ToUserName>
                  <FromUserName><!]></FromUserName>
                  <CreateTime>%s</CreateTime>
                  <MsgType><!]></MsgType>
                  <Content><!]></Content>
                  <FuncFlag>0</FuncFlag>
                  </xml>&quot;;   
      //定义变量last_step,记录上一次动作
      $last_step=$mc->get($fromUsername.&quot;step&quot;);
      //定义变量last_data,记录上一次数据
      $last_data=$mc->get($fromUsername.&quot;data&quot;);
      if(!empty( $keyword )){
      //判断用户动作
          if($last_step!=1){
          //将用户输入的数据保存至memcache
          $mc->set($fromUsername.&quot;data&quot;,$keyword,0,120);
          //记录用户这一次动作,值设为1
          $mc->set($fromUsername.&quot;step&quot;,1,0,120);
          $msgType = &quot;text&quot;;
          $contentStr = &quot;请再输入一个值:&quot;;
          $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
      echo $resultStr;
      } else {
      //清空memcach动作
      $mc->delete($fromUsername.&quot;step&quot;);
      //清空memcach数据
      $mc->delete($fromUsername.&quot;data&quot;);
      $msgType = &quot;text&quot;;
      $contentStr = &quot;你输入的第一个值为:&quot;.$last_data.&quot;\n 第二个值为:&quot;.$keyword;
      $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
      echo $resultStr;
      }
      }
    }else{
      echo &quot;&quot;;
      }
?>


原文地址:http://cloudbbs.org/forum.php?mod=viewthread&tid=20205  
页: [1]
查看完整版本: memcache在微信公众平台的运用