我必须每10秒在数组中放置数据。使用修改后的时间戳索引此数组是否愚蠢
$ a [时间戳] = 54; $ a [时间戳+10] = 34;
或者在Javascript中使用setInterval()并通过Ajax传递索引(对我来说非常糟糕)?
还是我最好的选择?
进一步详情:
我现在的代码:
$ first_time =(int)date('Hi'); $ _SESSION ['mypile'] [$ first_time] = array_fill($ first_time,15,array('paramA'=> 0,'paramB'=> 0));
然后,Ajax部分调用此脚本:
$time = (int)date('Hi');
$_SESSION['mypile'][$time]['paramA'] = calcul_temp($_SESSION['mypile'], $time);
答案 0 :(得分:2)
为什么不使用普通的数字索引数组?如果您不需要时间戳,那么:
$a[] = 54;
$a[] = 34;
如果您确实需要时间戳,那么执行以下操作会更有意义:
$a[] = array('timestamp' => time(), 'number' => 54);
$a[] = array('timestamp' => time(), 'number' => 34);
然后在每个偏移处,你有一个更有意义的关联数组:
echo 'Timestamp: ' . $a[0]['timestamp'] . ', Number: ' . $a[0]['number'];
如果这些操作快速连续发生,您可能会更好地使用microtime
答案 1 :(得分:0)
这似乎是一个非常好的解决方案,但如果脚本将运行很长时间,你必须小心内存使用。
答案 2 :(得分:0)
这是相当愚蠢的;如果你设置了一个时间间隔,只需每隔10秒调用一次你的函数,并将新的数字添加到数组中的下一个索引。全局或在迭代范围内跟踪此索引。
答案 3 :(得分:0)
$a['timestamp'] = time();
while (true) {
$a['data'][] = getData();
sleep(10);
}
你可以上课。然后构造设置时间戳,并且使用SPL数组索引和迭代器,它可以在foreach中循环并与某些数组函数一起使用。您可以创建一个方法来获取带或不带时间戳的数组等。
$dataCycle = new DataCycle();
while(true) {
$dataCycle->addData(getData());
sleep(10);
}
答案 4 :(得分:0)
好的,所以我决定每10秒对我的时间戳进行一次计算。简单,愚蠢,为我工作。
感谢你的想法。