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;
}
用了另一帖子版主的部分代码,但是标注的那一句还是执行有问题,请帮忙
$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;
}
用了另一帖子版主的部分代码,但是标注的那一句还是执行有问题,请帮忙
换个 web 服务器再试
echo json_encode($res);输出数据不正确,如输出20条数据,输出结果为最后两条数据重复10次,如果只输出两条,两条数据准确。
$result[]=$dd;//也出现相同问题错误结果:输出数据不正确,如输出20条数据,输出结果为最后两条数据重复10次,如果只输出两条,两条数据准确。
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
))
echo json_encode($res);
南辕北辙了吧?
$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;
}