Bonjour,

J'aimerai actualiser le contenu d'un <div> toutes les 5sec en JavaScript (c'est la première fois que je me lance dans JS. J'ai lu des cours et effectué je ne sais combien de recherches depuis 3 jours).

Pour cela, j'ai écrit le code suivant dans ma page index.php à force de recherches :

Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<!DOCTYPE html>
<html lang="fr">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
        <title>My Server</title>
        <script type="text/javascript">
            function refresh_div()
            {
                setInterval(refreshDiv, 5000);
            }
            function refreshDiv()
            {
                document.getElementById('fonctionPerfServ');
                console.log(fonctionPerfServ);                
            }
        </script>
    </head>
    <body onLoad="refresh_div()">
 
        <!-- DEBUT Affichage des Performances du serveur -->
        <div class="row" id="fonctionPerfServ">                            
            <?php
                include("fonctions/perfServer.php");
                $perfs = perfServer();
            ?>
 
            <div class="col-xl-4 col-sm-6 grid-margin stretch-card">
                <div class="card">
                    <div class="card-body">
                        <h4 class="card-title">Network Used</h4>                                                
                        <?php                                                
                            echo $perfs[0].' Octets / Seconde';                                             
                        ?>
                    </div>
                </div>
            </div>
 
            <div class="col-xl-4 col-sm-6 grid-margin stretch-card">
                <div class="card">
                    <div class="card-body">
                        <h4 class="card-title">CPU Used</h4>
                        <?php
                            echo $perfs[1].' %';                                      
                        ?>
                    </div>
                </div>
            </div>
 
            <div class="col-xl-4 col-sm-6 grid-margin stretch-card">
                <div class="card">
                    <div class="card-body">
                        <h4 class="card-title">RAM Used</h4>
                        <?php 
                            echo $perfs[2].' %';                                              
                        ?>
                    </div>
                </div>        
            </div>
 
        </div>                        
        <!-- FIN Affichage des Performances du serveur -->
    </body>
</html>


Pour plus de clarté, voici ma fonction perfServer() (qui fonctionne parfaitement) :

Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
    function perfServer()
    {
        // On lance le script PowerShell perfServer.ps1 qui va écrire la commande Get-Counter dans le fichier perfServ_LOG.txt
        $output = shell_exec('powershell -executionpolicy remotesigned -command "& {"fonctions/perfServer.ps1"; exit $err}"');
 
        // Le fichier texte
        $txt_file = 'fonctions/perfServer_Log.txt';
        // Variable permettant de parcourir le fichier texte
        $lines = file($txt_file);
        // On parcourt le fichier texte ligne par ligne
        foreach ($lines as $num=>$line)
        {
            // Si la ligne = 5 alors on obtient la valeur de consommation du réseau
            if($num == 5)
            {
                $reseau = $line;
                $reseau = trim($reseau);
                //$reseau = substr($reseau,0,3);               
            }
            // Si la ligne = 8 alors on obtient la valeur de consommation du processeur
            elseif($num == 8)
            {
                $processeur = $line;
                $processeur = trim($processeur);
                //$processeur = substr($processeur,0,3);                
            }
            // Si la ligne = 11 alors on obtient la valeur de consommation de la RAM
            elseif($num == 11)
            {
                $ram = $line;
                $ram = trim($ram);
                //$ram = substr($ram,0,3);
            }
        }
        // On récupère les valeurs dans un tableau
        $perfServer = array($reseau, $processeur, $ram);
        // On retourne le tableau
        return $perfServer;
    }
?>


Pour encore plus d'infos, voici mon fichier perfServer.ps1 appelé par ma fonction perfServ() :

Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
$varCheminRepertoireScript = [System.IO.Path]::GetDirectoryName($MyInvocation.MyCommand.Definition)
$currentScriptName = $MyInvocation.MyCommand.Name #Récupération du nom du script en cours
 
#On ne prend que le nom du script sans l'extention. Pour cela on chercher la position d'un point en partant de la droite et on prend tout ce qui est à sa gauche
$currentScriptName = $currentScriptName.substring(0,$($currentScriptName.lastindexofany(".")))
 
#Création du fichier vierge
$EmplacementFichier = "$varCheminRepertoireScript\$($currentScriptName)_Log.txt"
$MonFichier = New-Item -type file $EmplacementFichier -Force
 
Get-Counter | out-file $MonFichier


Et enfin, mon fichier texte perfServer_LOG.txt créée par mon perfServer.ps1 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Timestamp                  CounterSamples                                                                              
---------                  --------------                                                                              
05/02/2022 18:14:52        \\monPC\interfaceseau(intel[r] ethernet connection [2] i219-v)\total des       
                           octets/s :                                                                                  
                           1078331,00728607                                                                            
 
                           \\monPC\processeur(_total)\% temps processeur :                                   
                           25,5405828147069                                                                            
 
                           \\monPC\mémoire\pourcentage d’octets dédiés utilisés :                            
                           52,5155239627965                                                                            
 
                           \\monPC\mémoire\défauts de cache/s :                                              
                           0                                                                                           
 
                           \\monPC\disque physique(_total)\pourcentage du temps disque :                     
                           0                                                                                           
 
                           \\monPC\disque physique(_total)\taille de file d’attente du disque actuelle :     
                           0

Lors de la première arrivée sur index.php, ma fonction perfServer() est bien appelée et les données sont bien transmises dans le tableau et affichées dans mes différents sous-div. (Cf. Image ci-dessous)

Nom : affichagePerf.png
Affichages : 1326
Taille : 11,4 Ko


La console m'affiche bien le <div id="fonctionPerfServ"> toutes les 5sec. Mais le contenu visuel, sur mon index.php, ne change pas. (Cf. Image ci-dessous)

Nom : console.png
Affichages : 1339
Taille : 12,7 Ko


Franchement je ne comprends pas
Quelqu'un aurait-il une idée ?

Merci d'avance et bon weekend à toutes et à tous

Cordialement,

Derko.