我的邏輯是: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;
}