2009-08-04 1 views
4

Я должен помещать данные каждые 10 секунд в массив. Глупо индексировать этот массив с измененными временными отметкамиИндексирование массива каждый цикл (в секундах)

$ a [timestamp] = 54; $ a [timestamp + 10] = 34;

или в Javascript с помощью setInterval() и прохождения через Ajax индекса (очень дрянного мне)?

или у меня есть лучший вариант?

Дальнейшие детали:

  • Я должен связать в режиме реального времени с записями в моем массиве: это моя проблема. На 3-м цикле (от 21 секунды до 30 секунд с начала).
  • У меня есть только 15 записей для хранения.
  • Мой подарок Код:

    $ first_time = (ИНТ) Дата ('Привет'); $ _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

Ok поэтому я решил вокруг моей TIMESTAMP каждые 10 секунд, чтобы куски времени. Простой, глупый и работай для меня.

Благодарим вас за идеи.

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

+0

Почему это имеет смысл?Почему бы не просто индексировать время? –

+0

Как я уже добавил, мне нужно связать текущую метку времени с моим массивом. Может быть, я сделаю это в Javascript ... –

+0

Это действительно работает, но переезд более увлекателен, если это простой массив. – karim79

0

Это похоже на очень хорошее решение, хотя вам придется быть осторожным в использовании памяти, если скрипт будет работать в течение длительного времени.

+0

ОК, я должен был быть более конкретным, у меня осталось всего 15 значений. –

0

Это довольно глупо; если вы установили временной интервал, просто вызывайте свою функцию каждые 10 секунд и добавляйте новый номер к следующему индексу в массиве. Отслеживайте этот индекс глобально или в рамках итерации.

+0

Что делать, если ему нужно записать временную метку? Если это так, это хороший метод. – BabyCakes

+0

Это каждые 10 секунд, 15 раз, затем останавливается. У меня также есть эта идея, как karim79 сказал: пусть PHP индексирует массив и вызывает мой PHP-ajax каждые 10 секунд. –

+0

Да, это именно то, что вы должны делать. – AlbertoPL

0
$a['timestamp'] = time(); 
while (true) { 
    $a['data'][] = getData(); 
    sleep(10); 
} 

Вы можете сделать его класс. Конструкция затем устанавливает метку времени, а с индексом массива SPL и итератором она может быть зациклирована в foreach и используется с некоторыми функциями массива. Вы можете сделать метод, чтобы получить массив с или без метки времени и т.д.

$dataCycle = new DataCycle(); 
while(true) { 
    $dataCycle->addData(getData()); 
    sleep(10); 
} 
+0

Я хочу, чтобы моя система была как можно более простой, это POC. –

Смежные вопросы