php教程

超轻量级php框架startmvc

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

更新时间:2020-03-24 04:10:53 作者:startmvc
本文实例讲述了PHPmemcache在微信公众平台的应用方法。分享给大家供大家参考,具体如下:

本文实例讲述了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 memcache 微信公众平台