这个方法之前在测试环境中使用时一切安好,但放上线上后发现经常502,因为只是一个调试模块,不影响线上业务,也没去认真研究。今天想想真是奇怪,就准备拿来研究一下,这篇文章肯定不可能把这个问题说全,因为涉及的其它地方太多我也没办法贴出来,贴点代码吧,算是为这个匪夷所思的问题立个碑。
PHP代码如下:
//一个方法
public function historycards()
{
$data = array();
//取得redis里的数据
$val_history = array();
$redisKey = "history_cards";
$val_history = (array)$this->_Redis->hGetall($redisKey);
$this->debug($val_history, true);
$this->debug($data, true);
$data['history_val'] = $val_history;
#unset($data['history_val']['history_val']);
$this->debug($data);
}
就是一个从redis里获取一个hash键的值,得到一个数组,然后赋值给另一个变量,这时奇怪的问题发生了,另一个变量中这个索引直接成了递归,结果如下图: 这个方法里确实是调了其它的方法,也检查了调用的相关方法,按理是不可能出现这样的情况,但它真的发生了。做个记录吧。
友情提示:垃圾评论一律封号...