Créer un fichier log quand une fonction est executée

Petit nouveau ! | 3 Messages

27 sept. 2022, 09:08

Bonjour , actuellement une fonction me permet de recuperer l’état d'un Port GPIO ,
suivant l'etat du port (ouvert ou fermé) Avec ces lignes de code je fais affiché une icône et écrit (MARCHE ) sur ma page php.

Je voudrais aussi que sa crées un fichier de log ou il sera marqué MARCHE avec l'heure .

Code : Tout sélectionner

$POM_status=getCaptValues('17','Position','','GPIO-State.x'); if ($POM_status=="Ouvert"){ $POM_img="Pompe_ON.png"; $POM_txt="MARCHE"; $POM_col='white'; // Ecriture d'un fichier txt $nom_file = "pompe.txt"; // création du fichier $f = fopen($pompe.txt, "x+"); // écriture fputs(POM_txt="MARCHE" ); // fermeture fclose($f);
Modifié en dernier par laurent5353 le 27 sept. 2022, 16:36, modifié 1 fois.

Petit nouveau ! | 3 Messages

27 sept. 2022, 10:52

Si je fais cette fonction ?

Code : Tout sélectionner

function addLogEvent($event) { $time = date("D, d M Y H:i:s"); $time = "[".$time."] "; $event = $time.$event."\n"; file_put_contents("/../logs/pmp.txt", $event, FILE_APPEND); }

Code : Tout sélectionner

$POM_status=getCaptValues('17','Position','','GPIO-State.x'); if ($POM_status=="Ouvert"){ addLogEvent("Marche pompe"); $POM_img="Pompe_ON.png"; $POM_txt="MARCHE"; $POM_col='white'; }


Sa fonctionne mais mon fichier log se rempli toutes les 5 secondes car mon autre fonction getCaptValues fonctionne toutes les 5 secondes .Comment faire pour avoir une seul ecriture de Marche dans mon fichier de log ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

28 sept. 2022, 10:14

Moi je serais toi, dans mon fichier de log, je ne mettrai pas uniquement les MARCHE, mais les changements d'état.

Comme ça avant d'écrire MARCHE, je regarderai la dernière ligne de log précédemment écrite, si je suis toujours dans le même état je n'écrit rien, si l'état n'est pas le même alors j'écris MARCHE ou ARRET.


Si tu ne veux pas avoir un fichier de log avec tous les changements d'états mais uniquement les MARCHE, alors tu stockes dans un autre fichier (appelons le fichier2.txt) l'état courant, et tu n'écris les MARCHE dans ton fichier de log que si le fichier2.txt contient le statut précédent "ARRET" et que le statut courant est MARCHE.
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 3 Messages

28 sept. 2022, 13:29

Merci @rthur j'ai trouvé la solution .

Code : Tout sélectionner

$POM_status=getCaptValues('17','Position','','GPIO-State.x'); if(is_null($_SESSION['pmp_status'])) $_SESSION['pmp_status'] = $POM_status; $log = $POM_status != $_SESSION['pmp_status']; $_SESSION['pmp_status'] = $POM_status; if ($POM_status=="Ouvert"){ $POM_img="Pompe_ON.png"; $POM_txt="MARCHE"; $POM_col='white'; } elseif ($POM_status=="Ferme"){ $POM_img="Pompe_OFF.png"; $POM_txt="ARRET"; $POM_col='white'; } if($log) addLogEventp($POM_txt);