加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

讲述了PHP memcache在微信公众平台的应用方法

发布时间:2023-09-20 10:13:07 所属栏目:PHP教程 来源:
导读:本文实例讲述了PHP memcache在微信公众平台的应用方法。分享给大家供大家参考,具体如下:

现在微信公众平台大多数互动都是用户发送信息->微信分析并返回结果,这种模式功能比较单一。这里介绍另一种互动模式:用
本文实例讲述了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 (!emptyempty($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(!emptyempty( $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; 
    }//Cuoxin.com 
   } 
  } else { 
    echo ""; 
  } 
?> 
 

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章