2009-08-04 5 views
4

Je dois mettre les données toutes les 10 secondes dans un tableau. Est-il idiot d'indexer ce tableau avec des horodatages modifiésIndexation d'un tableau à chaque cycle (en secondes)

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

ou en Javascript avec le setInterval() et en passant par Ajax l'index (très merdique pour moi)?

ou ai-je une meilleure option?

Autres détails:

  • je dois relier en temps réel avec des entrées dans mon tableau: ceci est mon problème. Au 3e cycle (de 21 secondes à 30 secondes de l'heure de début).
  • Je n'ai que 15 entrées à stocker.
  • Mon code actuel:

    $ first_time = Date (int) ('Salut'); $ _SESSION ['mypile'] [$ first_time] = array_fill ($ first_time, 15, tableau ('paramA' => 0, 'paramB' => 0));

alors, la partie Ajax appelle ce script:

$time = (int)date('Hi'); 
$_SESSION['mypile'][$time]['paramA'] = calcul_temp($_SESSION['mypile'], $time); 

Répondre

0

Ok alors j'ai décidé d'arrondir mon horodatage toutes les 10 secondes pour avoir des morceaux de temps. Simple, idiot et travaille pour moi.

Merci pour vos idées.

2

Pourquoi ne pas utiliser une plaine de tableau indexé numériquement? Si vous ne besoin l'horodatage, puis:

$a[] = 54; 

$a[] = 34; 

Si vous avez besoin de l'horodatage, il serait plus logique de faire quelque chose comme:

$a[] = array('timestamp' => time(), 'number' => 54); 

$a[] = array('timestamp' => time(), 'number' => 34); 

Puis à chaque décalage que vous un tableau associatif plus significatif:

echo 'Timestamp: ' . $a[0]['timestamp'] . ', Number: ' . $a[0]['number']; 

Si ces opérations se produisent en succession rapide, vous seriez probablement mieux à l'aide microtime

+0

Pourquoi cela a-t-il plus de sens?Pourquoi ne pas simplement indexer avec le temps? –

+0

Comme j'ai ajouté, j'ai besoin de lier l'horodatage actuel à mon tableau. Peut-être que je vais le faire en Javascript ... –

+0

Cela fonctionne, mais la traversée est plus amusante si c'est un tableau simple. – karim79

0

Cela semble être une très bonne solution, bien que vous deviez faire attention à l'utilisation de la mémoire si le script devait fonctionner pendant longtemps.

+0

ok, j'aurais dû être plus précis, je n'ai que 15 valeurs à garder. –

0

C'est assez stupide; Si vous avez défini un intervalle de temps, faites simplement appel à votre fonction toutes les 10 secondes et ajoutez votre nouveau numéro à l'index suivant dans le tableau. Gardez une trace de cet index globalement ou dans le cadre de l'itération.

+0

Que faire s'il doit enregistrer l'horodatage? Si oui, c'est une bonne méthode. – BabyCakes

+0

C'est toutes les 10 secondes, 15 fois, puis arrêtez. J'ai aussi cette idée, comme karim79 a dit: laissez PHP indexer le tableau, et appelez mon PHP-ajax toutes les 10 secondes. –

+0

Oui, c'est exactement ce que vous devriez faire. – AlbertoPL

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

Vous pourriez en faire une classe. La construction définit ensuite l'horodatage, et avec l'index de tableau SPL et l'itérateur, elle peut être bouclée dans foreach et utilisée avec certaines fonctions de tableau. Vous pouvez faire une méthode pour obtenir un tableau avec ou sans l'horodatage, etc.

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

Je veux garder mon système aussi simple que possible, c'est un POC. –