国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

消費(fèi)隊(duì)列的時(shí)候,控制器返回的數(shù)據(jù)對(duì)象如何取值?

Doogeli

問題描述

我的邏輯是:python采集數(shù)據(jù),扔進(jìn)redis隊(duì)列,然后消費(fèi)者扔給控制器,返回?cái)?shù)據(jù)庫(kù)數(shù)據(jù),再扔給其它隊(duì)列去消費(fèi),現(xiàn)在是返回的數(shù)據(jù)一直錯(cuò)誤,json_decode 出來(lái)的是空的,打印出來(lái)的是對(duì)象,但是不是一般的對(duì)象。["_body":protected] ,這里我看 Response 里面有這個(gè)方法,但好像不是針對(duì)這個(gè)對(duì)象的?我嘗試了,沒效果。但我在控制器,同樣的model返回的,都直接可以用數(shù)組返問到?這又是為何?

     * Get http raw body.
     * 
     * @return string
     */
    public function rawBody() {
        return $this->_body;
    }
<?php

namespace app\queue\redis;
use support\Requests;
use support\Response;
use Webman\RedisQueue\Redis;
use Webman\RedisQueue\Consumer;
use Webman\RedisQueue\Client;
use app\api\controller\GameController;

class LotterySend implements Consumer
{

    // 要消費(fèi)的隊(duì)列
    public $queue = 'lottery_queue_1010'; // 一千零一夜

    public $connection = 'default';

    // 消費(fèi)者進(jìn)程數(shù)

    public function consume($data)
    {

        $gameController = new GameController();
        $lottery_Data = $gameController->lotteryInsert($data);
        var_dump($lottery_Data); //這里打印出來(lái)的數(shù)據(jù)如下
        $result = json_decode($lottery_Data);
        var_dump($result); //這里打印出來(lái)的是空的
    //    if($result['code'] == 200)
    //    {
    //         $sendData = ['data' => $result['data']];
    //        // 同步投遞消息
    //        // Redis::send($sub_queue, $sendData);

    //        // 異步投遞消息 // 將結(jié)果發(fā)送到其他消費(fèi)者
    //        Client::send('push-to-app', $sendData); // 推送給前端APP消費(fèi)者
    //        Client::send('push-to-settlement', $sendData); // 推送給后端結(jié)算消費(fèi)者

    //    }else{

    //         return json(['code'=>400,'data'=>'', 'msg' => '入庫(kù)返回?cái)?shù)據(jù)有誤']);
    //    }
    }

}
var_dump($lottery_Data); //這里打印出來(lái)的數(shù)據(jù)如下

#12 {main}object(support\Response)#103 (7) {
  ["exception":protected]=>
  NULL
  ["_header":protected]=>
  array(1) {
    ["Content-Type"]=>
    string(16) "application/json"
  }
  ["_status":protected]=>
  int(200)
  ["_reason":protected]=>
  NULL
  ["_version":protected]=>
  string(3) "1.1"
  ["_body":protected]=>
  string(310) "{"code":200,"data":{"id":224,"created_at":"2023-08-21 03:13:50","updated_at":"2023-08-21 03:13:50","typeid":1,"typename":"星座","game_itemid":7,"game_itemname":"獅子","issue":"1223","dimension":"1692558780","num":7,"xmm":"10","colorcode":"#FFDAB9"},"msg":"入庫(kù)成功"}"
  ["file"]=>
  NULL
}
NULL

$lottery_Data = $gameController->lotteryInsert($data); 這里是控制器

控制器最后的代碼就是查詢最后的插入ID,返回一些數(shù)據(jù):

// 通過事務(wù)確保數(shù)據(jù)一致性

        $last_id = Game::GetId($insertData);
        if ($last_id) {
            $res_data = Game::getGameById($last_id);
            return json(['code' => 200, 'data' => $res_data, 'msg' => '入庫(kù)成功']);
        }

下面是GAME model,用的是TPROM,

     /**
     *  獲取指定ID的游戲記錄
     */
    public static function getGameById($id){

        $query = self::where(['id'=>$id])->find();

        return $query;
    }

為此你搜索到了哪些方案及不適用的原因

963 1 0
1個(gè)回答

nitron

在消費(fèi)端new 一個(gè)controller是什么操作?直接隊(duì)列處理邏輯即可?為何還要走一到控制器?

你把GameController里的lotteryInsert的處理邏輯放倒LotterySend里不行嗎?

return json返回的是一個(gè)Response, 你要獲得這個(gè)response需要用curl之類http client去獲取

  • Doogeli 2023-08-21

    原來(lái)這樣,謝謝大佬~也是可以的,只不過,那個(gè)GameController對(duì)外開放的api接口而己~

年代過于久遠(yuǎn),無(wú)法發(fā)表回答
??