header("Content-Type: text/html;charset=utf-8");
$key=$_GET['key'];
$et=$_GET['et'];
$redisStr='127.0.0.1';
$redisPort=6379;
$pageNum=2000;
$res=array();$res['result'] = "0";$res['msg'] = "";$res['data'] = array();
$result = array();if (strcasecmp($key,"jgt")==0)
{
    try {$redis = new Redis();$redis->connect($redisStr,$redisPort);} catch (Exception $e){echo "redis failure";}
    list($m,$page)=explode("_",$et,2);
    if ($redis->exists($m))
    {
        $num=$redis->lSize($m);
        if ($page%ceil($num/$pageNum)==0) $page=ceil($num/$pageNum); else $page=$page%ceil($num/$pageNum);
        $listData= $redis->lRange($m,($page-1)*$pageNum,($page-1)*$pageNum+($pageNum-1));
        foreach ($listData as $label)
        {
            $data=$redis->hGetAll("$label");//hKeys;hVals;hGetAll;?????//
            $d=base64_encode(serialize($data));
            print_r($d);//可准确输出
            array_push($result,handle($s));//------------------------------------------------------------------------------------不能执行
        }
        $res['result'] = "1";
    }else
    {
    }
    echo '<br />';
    echo json_encode($res);
}
else
{
    $res['msg'] = "Unauthorized access!";
    echo '<br />';
    echo json_encode($res);
}function handle($s){
    $data = unserialize(base64_decode($s));
    $format = 'itime/flast/fop/fhi';
    $format = 'it/fl/fo/fh/flo/fcl/fv/fam/fop/fb/fs/ftotlVo';
    $data['k1'] = unpack($format, $data['k1']);
    $data['name'] = mb_convert_encoding($data['name'], 'UTF8', 'GBK');
    return $data;
}
用了另一帖子版主的部分代码,但是标注的那一句还是执行有问题,请帮忙

解决方案 »

  1.   

    handle($s) 你确定 不是 handle($d) ? 
      

  2.   

    502 是网关错,与程序本身无关,程序崩溃只可能引发 500 错
    换个 web 服务器再试
      

  3.   

    之前问题没有了,不知道为什么。现在有一个新的问题:
    echo json_encode($res);输出数据不正确,如输出20条数据,输出结果为最后两条数据重复10次,如果只输出两条,两条数据准确。
      

  4.   

    array_push($result,handle($s));//发现是这句有问题。
    $result[]=$dd;//也出现相同问题错误结果:输出数据不正确,如输出20条数据,输出结果为最后两条数据重复10次,如果只输出两条,两条数据准确。
      

  5.   

    原始数据不重复。以输出20个为例,在array_push之前、之后的结果是:
    array(3) {
      ["k1"]=>
      array(12) {
        ["time"]=>
        int(1504195140)
        ["lastClose"]=>
        float(70886.2578125)
        ["open"]=>
        float(70896.2578125)
        ["high"]=>
        float(71233.8671875)
        ["low"]=>
        float(70516.46875)
        ["close"]=>
        float(70582.25)
        ["vol"]=>
        float(4918)
        ["amount"]=>
        float(0)
        ["opid"]=>
        float(0)
        ["bv"]=>
        float(0)
        ["sv"]=>
        float(0)
        ["totalVol"]=>
        float(1252789)
      }
      ["name"]=>
      string(20) "巴西IBOVESPA股票"
      ["label"]=>
      string(12) "IXIXIBOVESPA"
    }array(3) {
      ["k1"]=>
      array(12) {
        ["time"]=>
        int(1504195140)
        ["lastClose"]=>
        float(92.849998474121)
        ["open"]=>
        float(92.849998474121)
        ["high"]=>
        float(93.349998474121)
        ["low"]=>
        float(92.699996948242)
        ["close"]=>
        float(92.790000915527)
        ["vol"]=>
        float(0)
        ["amount"]=>
        float(0)
        ["opid"]=>
        float(0)
        ["bv"]=>
        float(0)
        ["sv"]=>
        float(0)
        ["totalVol"]=>
        float(0)
      }
      ["name"]=>
      string(12) "美元指数"
      ["label"]=>
      string(7) "IXIXUDI"
    }
    ........中间还有一些数据array(3) {
      ["k1"]=>
      array(12) {
        ["time"]=>
        int(1504164660)
        ["lastClose"]=>
        float(12171.219726562)
        ["open"]=>
        float(12171.219726562)
        ["high"]=>
        float(12183.209960938)
        ["low"]=>
        float(12016.959960938)
        ["close"]=>
        float(12081.3203125)
        ["vol"]=>
        float(0)
        ["amount"]=>
        float(0)
        ["opid"]=>
        float(0)
        ["bv"]=>
        float(0)
        ["sv"]=>
        float(0)
        ["totalVol"]=>
        float(0)
      }
      ["name"]=>
      string(21) "富时中国A50指数"
      ["label"]=>
      string(8) "IXIXXIN9"
    }
    ---------------------------------------------------------------------------------------------------------此线之前是array_push之前的输出结果,后面为array_push之后的结果:重复且有些元素被覆盖丢失。
    {"k1":{"time":1504164660,"lastClose":12171.219726562,"open":12171.219726562,"high":12183.209960938,"low":12016.959960938,"close":12081.3203125,"vol":0,"amount":0,"opid":0,"bv":0,"sv":0,"totalVol":0},"name":"富时中国A50指数","label":"IXIXXIN9"}
    {"k1":{"time":1504166340,"lastClose":19598.05078125,"open":19563.359375,"high":19580.509765625,"low":19392.169921875,"close":19445.5,"vol":0,"amount":0,"opid":0,"bv":0,"sv":0,"totalVol":0},"name":"富时中国50指数 U","label":"IXIXXIN0U"}
    {"time":1504164660,"lastClose":12171.219726562,"open":12171.219726562,"high":12183.209960938,"low":12016.959960938,"close":12081.3203125,"vol":0,"amount":0,"opid":0,"bv":0,"sv":0,"totalVol":0}                         //丢失"name"和"label"
    {"time":1504166340,"lastClose":19598.05078125,"open":19563.359375,"high":19580.509765625,"low":19392.169921875,"close":19445.5,"vol":0,"amount":0,"opid":0,"bv":0,"sv":0,"totalVol":0}
    {"k1":{"time":1504164660,"lastClose":12171.219726562,"open":12171.219726562,"high":12183.209960938,"low":12016.959960938,"close":12081.3203125,"vol":0,"amount":0,"opid":0,"bv":0,"sv":0,"totalVol":0},"name":"富时中国A50指数","label":"IXIXXIN9"}
    {"k1":{"time":1504166340,"lastClose":19598.05078125,"open":19563.359375,"high":19580.509765625,"low":19392.169921875,"close":19445.5,"vol":0,"amount":0,"opid":0,"bv":0,"sv":0,"totalVol":0},"name":"富时中国50指数 U","label":"IXIXXIN0U"}
    {"time":1504164660,"lastClose":12171.219726562,"open":12171.219726562,"high":12183.209960938,"low":12016.959960938,"close":12081.3203125,"vol":0,"amount":0,"opid":0,"bv":0,"sv":0,"totalVol":0}
    {"time":1504166340,"lastClose":19598.05078125,"open":19563.359375,"high":19580.509765625,"low":19392.169921875,"close":19445.5,"vol":0,"amount":0,"opid":0,"bv":0,"sv":0,"totalVol":0}
    {"k1":{"time":1504164660,"lastClose":12171.219726562,"open":12171.219726562,"high":12183.209960938,"low":12016.959960938,"close":12081.3203125,"vol":0,"amount":0,"opid":0,"bv":0,"sv":0,"totalVol":0},"name":"富时中国A50指数","label":"IXIXXIN9"}
    {"k1":{"time":1504166340,"lastClose":19598.05078125,"open":19563.359375,"high":19580.509765625,"low":19392.169921875,"close":19445.5,"vol":0,"amount":0,"opid":0,"bv":0,"sv":0,"totalVol":0},"name":"富时中国50指数 U","label":"IXIXXIN0U"}
    {"time":1504164660,"lastClose":12171.219726562,"open":12171.219726562,"high":12183.209960938,"low":12016.959960938,"close":12081.3203125,"vol":0,"amount":0,"opid":0,"bv":0,"sv":0,"totalVol":0}
    {"time":1504166340,"lastClose":19598.05078125,"open":19563.359375,"high":19580.509765625,"low":19392.169921875,"close":19445.5,"vol":0,"amount":0,"opid":0,"bv":0,"sv":0,"totalVol":0}
    {"k1":{"time":1504164660,"lastClose":12171.219726562,"open":12171.219726562,"high":12183.209960938,"low":12016.959960938,"close":12081.3203125,"vol":0,"amount":0,"opid":0,"bv":0,"sv":0,"totalVol":0},"name":"富时中国A50指数","label":"IXIXXIN9"}
    {"k1":{"time":1504166340,"lastClose":19598.05078125,"open":19563.359375,"high":19580.509765625,"low":19392.169921875,"close":19445.5,"vol":0,"amount":0,"opid":0,"bv":0,"sv":0,"totalVol":0},"name":"富时中国50指数 U","label":"IXIXXIN0U"}{"time":1504166340,"lastClose":19598.05078125,"open":19563.359375,"high":19580.509765625,"low":19392.169921875,"close":19445.5,"vol":0,"amount":0,"opid":0,"bv":0,"sv":0,"totalVol":0}
    {"k1":{"time":1504164660,"lastClose":12171.219726562,"open":12171.219726562,"high":12183.209960938,"low":12016.959960938,"close":12081.3203125,"vol":0,"amount":0,"opid":0,"bv":0,"sv":0,"totalVol":0},"name":"富时中国A50指数","label":"IXIXXIN9"}
    {"k1":{"time":1504166340,"lastClose":19598.05078125,"open":19563.359375,"high":19580.509765625,"low":19392.169921875,"close":19445.5,"vol":0,"amount":0,"opid":0,"bv":0,"sv":0,"totalVol":0},"name":"富时中国50指数 U","label":"IXIXXIN0U"}{"time":1504164660,"lastClose":12171.219726562,"open":12171.219726562,"high":12183.209960938,"low":12016.959960938,"close":12081.3203125,"vol":0,"amount":0,"opid":0,"bv":0,"sv":0,"totalVol":0}
    ------------------------------------------------------------------------逐个增加输出看到的结果,可以看到数据被改变的过程:
    Array          //--------------------------------------------输出一个时正确
    (
        [0] => Array
            (
                [k1] => Array
                    (
                        [time] => 1504195140
                        [lastClose] => 70886.2578125
                        [open] => 70896.2578125
                        [high] => 71233.8671875
                        [low] => 70516.46875
                        [close] => 70582.25
                        [vol] => 4918
                        [amount] => 0
                        [opid] => 0
                        [bv] => 0
                        [sv] => 0
                        [totalVol] => 1252789
                    )            [name] => 巴西IBOVESPA股票
                [label] => IXIXIBOVESPA
            ))
    Array             //--------------------------------------输出两个时也正确
    (
        [0] => Array
            (
                [k1] => Array
                    (
                        [time] => 1504195140
                        [lastClose] => 70886.2578125
                        [open] => 70896.2578125
                        [high] => 71233.8671875
                        [low] => 70516.46875
                        [close] => 70582.25
                        [vol] => 4918
                        [amount] => 0
                        [opid] => 0
                        [bv] => 0
                        [sv] => 0
                        [1504195140] => 1252789
                    )            [name] => 巴西IBOVESPA股票
                [label] => IXIXIBOVESPA
            )    [1] => Array
            (
                [k1] => Array
                    (
                        [time] => 1504195140
                        [lastClose] => 92.849998474121
                        [open] => 92.849998474121
                        [high] => 93.349998474121
                        [low] => 92.699996948242
                        [close] => 92.790000915527
                        [vol] => 0
                        [amount] => 0
                        [opid] => 0
                        [bv] => 0
                        [sv] => 0
                        [totalVol] => 0
                    )            [name] => 美元指数
                [label] => IXIXUDI
            ))
    Array                //--------------------------------------输出三个时,第一个的name和label没有了,第二个的name值变为了time
    (
        [0] => Array
            (
                [time] => 1504187100
                [lastClose] => 5669.7211914062
                [open] => 5669.7001953125
                [high] => 5714.5219726562
                [low] => 5669.7001953125
                [close] => 5714.5219726562
                [vol] => 0
                [amount] => 0
                [opid] => 0
                [bv] => 0
                [sv] => 0
                [totalVol] => 626368000
            )    [1] => Array
            (
                [k1] => Array
                    (
                        [time] => 1504195140
                        [lastClose] => 92.849998474121
                        [open] => 92.849998474121
                        [high] => 93.349998474121
                        [low] => 92.699996948242
                        [close] => 92.790000915527
                        [vol] => 0
                        [amount] => 0
                        [opid] => 0
                        [bv] => 0
                        [sv] => 0
                        [totalVol] => 0
                    )            [name] => 1504195140
                [label] => IXIXUDI
            )    [2] => Array
            (
                [k1] => Array
                    (
                        [time] => 1504187100
                        [lastClose] => 5669.7211914062
                        [open] => 5669.7001953125
                        [high] => 5714.5219726562
                        [low] => 5669.7001953125
                        [close] => 5714.5219726562
                        [vol] => 0
                        [amount] => 0
                        [opid] => 0
                        [bv] => 0
                        [sv] => 0
                        [totalVol] => 626368000
                    )            [name] => 澳大利亚普通股指
                [label] => IXIXAORD
            ))
      

  6.   

    array_push($result,handle($s));
     echo json_encode($res);
    南辕北辙了吧?
      

  7.   

    代码后来改过,是这样的:
            $res=array();$res['result'] = "0";$res['msg'] = "";$res['data'] = array();
            .......
            foreach ($listData as $label)
            {
                try {$data=$redis->hGetAll("$label");}catch (Exception $e) {$res['msg'] = "r database failure 0";}       
                $d=base64_encode(serialize($data));
                $dd=handle($d,$label);    
                array_push($res['data'],$dd);
            }
            .......
            exit(json_encode($res,JSON_UNESCAPED_UNICODE));
    function handle($s,$label){
        $data = unserialize(base64_decode($s));
        $format = 'itime/flastClose/fopen/fhigh/flow/fclose/fvol/famount/fopid/fbv/fsv/ftotalVol';
        $data['label']=$label;
        $data['k1'] = unpack($format, $data['k1']);
        $data['name'] = mb_convert_encoding($data['name'], 'UTF8', 'GBK');
        return $data;
    }
           
      

  8.   

    gdb调试返回结果,如何解决?