本文實例講述了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;
- }//Vevb.com
- }
- } else {
- echo "";
- }
- ?>
新聞熱點
疑難解答