RISOLTO Reload code php

Stato
Discussione chiusa ad ulteriori risposte.

Matt0550

Nuovo Utente
66
10
CPU
i7 9700k
Dissipatore
Cooler Master 212 evo
Scheda Madre
Asus prime z390
Hard Disk
Seagate 1tb
RAM
16gb corsair
Scheda Video
Asus dual rtx2060
Monitor
Omen full hd 144hz
Alimentatore
Seasonic focus + 750w
Case
Cooler master mb511
Sistema Operativo
Windows 10
Salve a tutti! Io ho questo script:
PHP:
function ping($Host2, $port2, $timeout2)
{
  $tB2 = microtime(true);
  $fP2 = fSockOpen($Host2, $port2, $errno2, $errstr2, $timeout2);
  if (!$fP2) { return "down"; }
  $tA2 = microtime(true);
  return round((($tA2 - $tB2) * 1000), 0)." ms";
}
$statoms1 = ping("www.google.com", 80, 10);


if ($statoms1 > 100) {
  echo "Ping troppo alto";
} else {
  echo "Ping ok";
}
echo "\n" . $statoms1;
Volevo fare uno script che ogni secondo il ping si aggiorna. Ho provato un codice ma mi aggiorna la pagina invece voglio un script che aggiorna solo quella parte di codice. E' possibile? grazie.

Inoltre è possibile togliere gli errori di php perché quando per esempio il sito è in down o l'url è sconosciuto mi da anche un'errore php con scritto che non si può connettere o che non trova l'host. è possibile toglierlo?
 

icox

Utente Attivo
371
148
Non sapendo che struttura ha la tua pagina il modo piu' semplice che mi viene in mente e' quello di creare una funzione javascript che periodicamente interroga il tuo server. L'output della tua funzione PHP viene quindi inserito nella pagina aggiornando solo gli elementi del DOM che ti interessano.
Guarda XMLHttpRequest per utilizzare solamente javascript. Se invece usi qualche framework o libreria e' molto probabile che ti offrano dei metodi per chiamate asincrone.

In alternativa puoi usare un iframe, puntando l'url al server/funzione che genera il risultato (personalmente non mi piace molto).

Infine, per tenerlo "aggiornato" puoi banalmente ripetere la richiesta ogni n secondi oppure usare un websocket (piu' avanzato ma piu' efficiente).
 

Matt0550

Nuovo Utente
66
10
CPU
i7 9700k
Dissipatore
Cooler Master 212 evo
Scheda Madre
Asus prime z390
Hard Disk
Seagate 1tb
RAM
16gb corsair
Scheda Video
Asus dual rtx2060
Monitor
Omen full hd 144hz
Alimentatore
Seasonic focus + 750w
Case
Cooler master mb511
Sistema Operativo
Windows 10
Non sapendo che struttura ha la tua pagina il modo piu' semplice che mi viene in mente e' creare una semplice funzione javascript che periodicamente interroga il tuo server. L'output della tua funzione PHP viene quindi inserito nella pagina aggiornando solo gli elementi DOM che ti interessano.
Guarda XMLHttpRequest per utilizzare solamente javascript. Se invece usi qualche framework o libreria e' molto probabile che ti offrano dei metodi per chiamate asincrone.

In alternativa puoi usare un iframe, usando l'url che genera il risultato che desideri inserire nella pagina (personalmente non mi piace molto).

Infine, per tenerlo "aggiornato" puoi banalmente ripetere la richiesta ogni n secondi oppure usare un websocket (piu' avanzato ma piu' efficiente).
Grazie, sul gruppo telegram già mi stanno aiutando infatti mi hanno detto di usare le chiamate asincrone. In caso che non funziona proverò anche la tua soluzione. Grazie!
 

icox

Utente Attivo
371
148
Ah be se hai il gruppo Telegram...

Ti invito a condividere la soluzione qualora la trovassi, potrebbe essere utile ad altri.
 
  • Mi piace
Reactions: Mursey

Matt0550

Nuovo Utente
66
10
CPU
i7 9700k
Dissipatore
Cooler Master 212 evo
Scheda Madre
Asus prime z390
Hard Disk
Seagate 1tb
RAM
16gb corsair
Scheda Video
Asus dual rtx2060
Monitor
Omen full hd 144hz
Alimentatore
Seasonic focus + 750w
Case
Cooler master mb511
Sistema Operativo
Windows 10
Ah be se hai il gruppo Telegram...

Ti invito a condividere la soluzione qualora la trovassi, potrebbe essere utile ad altri.
Sisi, lo so. Grazie
Post automaticamente unito:

Soluzione:
index.html:
HTML:
<html>
<head>
    <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
    <script src="index.js"></script>
    </head>
    
    <body>
    <div>
        <p>ping 1</p>
        <p id="ms1"></p>
        <p id="status1"></p>
    </div>
    <div>
        <p>ping 2</p>
        <p id="ms2"></p>
        <p id="status2"></p>
    </div>
    <div>
        <p>ping 3</p>
        <p id="ms3"></p>
        <p id="status3"></p>
    </div>

    </body>
</html>
ping.php:
PHP:
<?php


function ping($Host2, $port2, $timeout2)
{
  $tB2 = microtime(true);
  $fP2 = fSockOpen($Host2, $port2, $errno2, $errstr2, $timeout2);
  if (!$fP2) { return "down"; }
  $tA2 = microtime(true);
  return round((($tA2 - $tB2) * 1000), 0)." ms";
}

$statoms1 = ping("www.google.com", 80, 10);
$statoms2 = ping("socialclub.rockstargames.com", 80, 10);
$statoms3 = ping("www.rockstargames.com", 80, 10);
$status = '';
$data = array();

if ($statoms1 >= 100 && $statoms1 < 999) {
    $status = "Ping troppo alto";
    array_push($data, ['status' =>  $status, 'ms' => $statoms1]);
} else if($statoms1 < 100){
    $status = "Ping ok";
    array_push($data, ['status' =>  $status, 'ms' => $statoms1]);
}
else if($statoms1 >1000){
    $status = "Ping troppo alto";
    array_push($data, ['status' =>  $status, 'ms' => $statoms1]);
}

if ($statoms2 >= 100 && $statoms2 < 999) {
    $status = "Ping troppo alto";
    array_push($data, ['status' =>  $status, 'ms' => $statoms2]);
} else if($statoms2 < 100){
    $status = "Ping ok";
    array_push($data, ['status' =>  $status, 'ms' => $statoms2]);
}
else if($statoms2 >1000){
    $status = "Ping troppo alto";
    array_push($data, ['status' =>  $status, 'ms' => $statoms2]);
}

if ($statoms3 >= 100 && $statoms3 < 999) {
    $status = "Ping troppo alto";
    array_push($data, ['status' =>  $status, 'ms' => $statoms3]);
} else if($statoms3 < 100){
    $status = "Ping ok";
    array_push($data, ['status' =>  $status, 'ms' => $statoms3]);
}
else if($statoms3 >1000){
    $status = "Ping troppo alto";
    array_push($data, ['status' =>  $status, 'ms' => $statoms3]);
}


echo json_encode($data); //output in formato json

 
?>

index.js:
JavaScript:
$(document).ready(function(){ //jquery attende il caricamento della pagina

setInterval(function() { //esegue ogni secondo la funzione al suo interno
    $.getJSON( "ping.php", function( data ) { //chiamata asincrona con get allo script
        $.each(data, function(key, value){ // esegue un foreach
            if(key == 0){
                $('#ms1').html(value.ms); //scrive i ms
                $('#status1').html(value.status); //scrive lo stato
                if (value.status == "Ping troppo alto"){
                    $('#status1').css("color", "red");
                }
                else if (value.status == "Ping ok"){
                    $('#status1').css("color", "green")
                }
            }
            else if(key == 1){
                $('#ms2').html(value.ms); //scrive i ms
                $('#status2').html(value.status); //scrive lo stato
            if (value.status == "Ping troppo alto"){
                $('#status2').css("color", "red");
            }
                else if (value.status == "Ping ok"){
                    $('#status2').css("color", "green")
                }
            }
            
            else if(key == 2){
                $('#ms3').html(value.ms); //scrive i ms
                $('#status3').html(value.status); //scrive lo stato
            }
            if (value.status == "Ping troppo alto"){
                $('#status3').css("color", "red");
            }
                else if (value.status == "Ping ok"){
                    $('#status3').css("color", "green")
                }
        });
    }).fail(function(){alert ('url sbagliato');});
}, 1000);// 1000 sono i millisecondi
  
});
GRAZIE A mt512 CHE MI HA AIUTATO A RISOLVERE IL PROBLEMA.
 

Allegati

Ultima modifica:

sp3ctrum

Moderatore
Staff Forum
7,038
2,635
CPU
Intel i7 6700k @4500 Mhz
Dissipatore
Scythe Mugen 5 rev.b Push&Pull
Scheda Madre
ASUS Z170 Pro Gaming
Hard Disk
SSD Samsung evo 850 250gb + Toshiba P300 3Tb
RAM
G.Skill 16gb Ripjaws V 3200 CL16
Scheda Video
Zotac Nvidia GTX 1080 Mini
Scheda Audio
Topping DX3 Pro + Focusrite Scarlett 2i2 + Creative XFI HD + Edifier Studio R1280T
Monitor
Acer Predator XB241H 144Hz G-Sync
Alimentatore
FSP Raider 650W 80+ Silver
Case
Thermaltake V200 RGB
Internet
Unitymedia 120Mb
Sistema Operativo
Windows 10
Chiudo come da richiesta
 
Stato
Discussione chiusa ad ulteriori risposte.

Entra

oppure Accedi utilizzando

Discussioni Simili

Hot del momento