每个周期索引一个数组(以秒为单位)
Posted
技术标签:
【中文标题】每个周期索引一个数组(以秒为单位)【英文标题】:Indexing an array every cycle (in seconds) 【发布时间】:2010-11-16 16:04:35 【问题描述】:我必须每 10 秒将数据放入一个数组中。用修改后的时间戳索引这个数组是不是很傻
$a[时间戳] = 54; $a[时间戳+10] = 34;
或者在 javascript 中使用 setInterval() 并通过 Ajax 传递索引(对我来说非常糟糕)?
或者我有最好的选择吗?
更多细节:
我必须将实时数据与数组中的条目链接起来:这是我的问题。在第 3 个周期(从开始时间开始的 21 秒到 30 秒)。 我只有 15 个条目要存储。我现在的代码:
$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);
【问题讨论】:
【参考方案1】:为什么不使用普通的数字索引数组?如果您不需要时间戳,那么:
$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
【讨论】:
为什么这样更有意义?为什么不只用时间索引? 就像我添加的那样,我需要将当前时间戳链接到我的数组。也许我会在 Javascript 中做到这一点...... 确实可以,但是如果是普通数组,遍历会更有趣。【参考方案2】:这似乎是一个很好的解决方案,但如果脚本要运行很长时间,您将不得不注意内存使用情况。
【讨论】:
好的,我应该更具体一些,我只有 15 个值要保留。【参考方案3】:这很愚蠢;如果您设置了时间间隔,只需每 10 秒调用一次函数并将新数字添加到数组中的下一个索引。全局或在迭代范围内跟踪此索引。
【讨论】:
如果他需要记录时间戳怎么办?如果是这样,这是一个很好的方法。 每 10 秒,15 次,然后停止。我也有这个想法,就像 karim79 说的:让 php 索引数组,每 10 秒调用一次我的 PHP-ajax。 是的,这正是你应该做的。【参考方案4】:$a['timestamp'] = time();
while (true)
$a['data'][] = getData();
sleep(10);
你可以把它做成一个类。然后该构造设置时间戳,并使用 SPL 数组索引和迭代器,它可以在 foreach 中循环并与一些数组函数一起使用。您可以创建一个方法来获取带有或不带有时间戳等的数组。
$dataCycle = new DataCycle();
while(true)
$dataCycle->addData(getData());
sleep(10);
【讨论】:
我想让我的系统尽可能简单,这是一个 POC。【参考方案5】:好的,所以我决定每 10 秒对时间戳进行四舍五入,以获得时间。简单,愚蠢,为我工作。
感谢您的想法。
【讨论】:
以上是关于每个周期索引一个数组(以秒为单位)的主要内容,如果未能解决你的问题,请参考以下文章