récupéré le nombre de ligne entre 2 occurrences

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : récupéré le nombre de ligne entre 2 occurrences

Re: récupéré le nombre de ligne entre 2 occurrences

par stealth35 » 05 déc. 2010, 18:48

tu peux t'orienter par la : vos-contributions/manipuler-simplement- ... 55918.html
ca sera plus simple pour manipuler tes requêtes

Re: récupéré le nombre de ligne entre 2 occurrences

par joanel26 » 05 déc. 2010, 10:35

Salut pour soustraire deux date le plus simple est les convertir en timestamp

Pour passer une date en timestamp voir la fonction : mktime()
Pour passe d'un timestamp à une date : date("Y-m-d H:i:s", $timestamp)

Pour récupérer l'heure et la date rien de plus simple, tu utilise la fonction substr() (sous-chaine) qui te permet d'isoler des sous-chaines de caractères

Voila un bon de code que j'ai dans mes archives ça pourrait t'aider pour les date et comprendre la fonction substr()

Code : Tout sélectionner

$actu = mktime(); $timestamp = mktime(23, 59, 59, 11, 23, 1999); $convertion = date('Y-m-d H:i:s', $ladate); $ldate = substr($convertion,8,2).'-'.substr($convertion,5,2).'-'.substr($convertion,0,4); $heure = substr($convertion,11,2).':'.substr($convertion,14,2); $difference = $actu-$timestamp;

Re: récupéré le nombre de ligne entre 2 occurrences

par mackguil » 05 déc. 2010, 08:58

Je changerais la date en secondes par rapport à UNIX, je soustrairerais, et ça donnerait la différence en secondes.
Bonjour

Quelle fonction dois je utiliser pour faire la soustraction ?

Et quelle fonction pour récupérer l'heure dans une ligne?

Comment changer l'heure en seconde?

Merci

Re: récupéré le nombre de ligne entre 2 occurrences

par devlop78 » 05 déc. 2010, 03:01

Je changerais la date en secondes par rapport à UNIX, je soustrairerais, et ça donnerait la différence en secondes.

récupéré le nombre de ligne entre 2 occurrences

par mackguil » 05 déc. 2010, 01:19

Bonjour

Je débute en PHP et cherche a compter le nombre de ligne entre 2 occurence dans un fichier log en TXT.

Je m'explique.

Voici mon log

26/11/2010 23:09:07~!~Event Trigger~!~Delayed Trigger A6 Off (hall detecteur)
26/11/2010 23:09:57~!~Event Trigger~!~Recurring Trigger (nolive)
26/11/2010 23:10:57~!~Event Trigger~!~Recurring Trigger (nolive)
26/11/2010 23:10:57~!~Event Trigger~!~Value change trigger (temperature serre hors gel on):serre milieu from: 250 to: 238 C14 On (serre radiateur) , C15 On (serre lampadaire paille)26/11/2010 23:09:07~!~Event Trigger~!~Delayed Trigger A6 Off (hall detecteur)
26/11/2010 23:09:57~!~Event Trigger~!~Recurring Trigger (nolive)
26/11/2010 23:10:57~!~Event Trigger~!~Recurring Trigger (nolive)
26/11/2010 23:10:57~!~Event Trigger~!~Value change trigger (temperature serre hors gel on):serre milieu from: 250 to: 238 C14 On (serre radiateur) , C15 On (serre lampadaire paille)
26/11/2010 23:11:57~!~Event Trigger~!~Recurring Trigger (nolive)
26/11/2010 23:12:57~!~Event Trigger~!~Recurring Trigger (nolive)
26/11/2010 23:13:57~!~Event Trigger~!~Recurring Trigger (nolive)
26/11/2010 23:13:58~!~Event Trigger~!~Value change trigger (temperature serre hors gel off):serre milieu from: 238 to: 394 C14 Off (serre radiateur) , C15 Off (serre lampadaire paille)
26/11/2010 23:14:57~!~Event Trigger~!~Recurring Trigger (nolive)
26/11/2010 23:15:57~!~Event Trigger~!~Recurring Trigger (nolive)
26/11/2010 23:15:58~!~Event Trigger~!~Value change trigger (temperature serre hors gel off):serre milieu from: 394 to: 463 C14 Off (serre radiateur) , C15 Off (serre lampadaire paille)
26/11/2010 23:16:57~!~Event Trigger~!~Recurring Trigger (nolive)
26/11/2010 23:17:57~!~Event Trigger~!~Recurring Trigger (nolive)
26/11/2010 23:18:57~!~Event Trigger~!~Recurring Trigger (nolive)
26/11/2010 23:18:57~!~Event Trigger~!~Value change trigger (temperature serre hors gel off):serre milieu from: 463 to: 369 C14 Off (serre radiateur) , C15 Off (serre lampadaire paille)
26/11/2010 23:19:57~!~Event Trigger~!~Recurring Trigger (nolive)
26/11/2010 23:20:57~!~Event Trigger~!~Recurring Trigger (nolive)
26/11/2010 23:20:58~!~Event Trigger~!~Value change trigger (temperature serre hors gel off):serre milieu from: 369 to: 325 C14 Off (serre radiateur) , C15 Off (serre lampadaire paille)
26/11/2010 23:21:57~!~Event Trigger~!~Recurring Trigger (nolive)
26/11/2010 23:22:57~!~Event Trigger~!~Recurring Trigger (nolive)
26/11/2010 23:22:58~!~Event Trigger~!~Value change trigger (temperature serre hors gel off):serre milieu from: 325 to: 294 C14 Off (serre radiateur) , C15 Off (serre lampadaire paille)
26/11/2010 23:23:57~!~Event Trigger~!~Recurring Trigger (drive space)
26/11/2010 23:23:57~!~Event Trigger~!~Recurring Trigger (nolive)
26/11/2010 23:11:57~!~Event Trigger~!~Recurring Trigger (nolive)
26/11/2010 23:12:57~!~Event Trigger~!~Recurring Trigger (nolive)
26/11/2010 23:13:57~!~Event Trigger~!~Recurring Trigger (nolive)
26/11/2010 23:13:58~!~Event Trigger~!~Value change trigger (temperature serre hors gel off):serre milieu from: 238 to: 394 C14 Off (serre radiateur) , C15 Off (serre lampadaire paille)
26/11/2010 23:14:57~!~Event Trigger~!~Recurring Trigger (nolive)
26/11/2010 23:15:57~!~Event Trigger~!~Recurring Trigger (nolive)
26/11/2010 23:15:58~!~Event Trigger~!~Value change trigger (temperature serre hors gel off):serre milieu from: 394 to: 463 C14 Off (serre radiateur) , C15 Off (serre lampadaire paille)
26/11/2010 23:16:57~!~Event Trigger~!~Recurring Trigger (nolive)
26/11/2010 23:17:57~!~Event Trigger~!~Recurring Trigger (nolive)
26/11/2010 23:18:57~!~Event Trigger~!~Recurring Trigger (nolive)
26/11/2010 23:18:57~!~Event Trigger~!~Value change trigger (temperature serre hors gel off):serre milieu from: 463 to: 369 C14 Off (serre radiateur) , C15 Off (serre lampadaire paille)
26/11/2010 23:19:57~!~Event Trigger~!~Recurring Trigger (nolive)
26/11/2010 23:20:57~!~Event Trigger~!~Recurring Trigger (nolive)
26/11/2010 23:20:58~!~Event Trigger~!~Value change trigger (temperature serre hors gel off):serre milieu from: 369 to: 325 C14 Off (serre radiateur) , C15 Off (serre lampadaire paille)
26/11/2010 23:21:57~!~Event Trigger~!~Recurring Trigger (nolive)
26/11/2010 23:22:57~!~Event Trigger~!~Recurring Trigger (nolive)
26/11/2010 23:22:58~!~Event Trigger~!~Value change trigger (temperature serre hors gel off):serre milieu from: 325 to: 294 C14 Off (serre radiateur) , C15 Off (serre lampadaire paille)
26/11/2010 23:23:57~!~Event Trigger~!~Recurring Trigger (drive space)
26/11/2010 23:23:57~!~Event Trigger~!~Recurring Trigger (nolive)

En fait je voudrais connaitre le temps que fonctionne un chauffage dasn une serre pour calculer ma consommation.

Pour se faire je pense compter le temps entre une ligne qui contient

26/11/2010 23:10:57~!~Event Trigger~!~Value change trigger (temperature serre hors gel on):serre milieu from: 250 to:

et la ligne qui affiche le off après le on

26/11/2010 23:13:58~!~Event Trigger~!~Value change trigger (temperature serre hors gel off):serre milieu from: 238 to

Voici le code que j'ai afin d'ouvrir le le fichier log et de recupéré une valeur

Code : Tout sélectionner

<?php $i=0; $element_liste = "~!~Event Trigger~!~Value change trigger (temperature serre hors gel on):serre milieu from:"; $fichier = fopen("C:/Program Files/HomeSeer/ah.log", "r"); if ($fichier) //si la lecture s'est bien déroulée { //tanqu'on est pas à la fin du fichier while (!feof($fichier)) { $ligne = fgets($fichier, 4096); //lit ligne par ligne 4096 octets if(strstr($ligne, $element_liste)) { $resultat[$i] = $ligne; $i++; } } fclose($fichier); } //j'affiche #for($i=0; $i<count($resultat); $i++) echo "<B> Le chauffage de la serre a fonctionné $i minute depuis le 4 12/2010 : </B>"; # echo "<B>Résultat numéro $i : </B>".$resultat[$i]."<br/>"; ?>
Par contre je ne comprend pas comment faire pour comparer l'heure de démarrage d'une ligne on et l'heure d’extinction d'une ligne off dans le log et calculer le temps écoulé, additionne le tout afin d'obtenir le temps de fonctionnement.

Si vous avez des pistes, merci

PS: j'ai cherché 15 jours afin de trouver le bout de code plus haut.