Avatar billede eflow Nybegynder
20. august 2001 - 14:39 Der er 30 kommentarer og
1 løsning

Ping system (Ping tider)

jeg ahr fundet noget kode, som jeg så lige har lavet en funktion ud af:
<?
function pingip($ip,$port,$info){

    if (fsockopen($ip, $port)){
  echo \"<tr><td>\".$info.\"</td><tdDer var sq hul igenem</td></tr>\";
    } else {
  echo \"<tr><td>\".$info.\"</td><td>Det gik sq ikke...</td></tr>\";
    }
}
?>

her kalder jeg så den funktion:
<?=pingip(\"eksperten.dk\",80,\"Eksperten.dk Webserver\");?>
og det virker det hele, men jeg vil godt have ping tiderne vist...kan det lade sig gøre ?
Avatar billede bigo Nybegynder
20. august 2001 - 14:52 #1
prøv evt. dette

ob_start();
echo \"<pre>\";
system(\"ping.exe $ip\");
    echo \"</pre>\";
    $ping_data = ob_get_contents();
    ob_end_clean();
    echo \"<font style=\'font-size:8pt\'>\".$pingdata.\"</font><br><br>Done..</font>\";
Avatar billede myplacedk Nybegynder
20. august 2001 - 15:10 #2
Hvis du vil gøre det på den måde, kan du fx. gøre noget i stil med dette:

function getmicrotime(){
    list($usec, $sec) = explode(\" \",microtime());
    return ((float)$usec + (float)$sec);
    }

$time_start = getmicrotime();
 
fsockopen($ip, $port);

$time_end = getmicrotime();
$time = $time_end - $time_start;

echo \"$time seconds\";

Dette er IKKE at pinge, dette tager noget længere tid. Men det giver en tid, der kan sammenlignes. Det du måler er, hvor lang tid det tager at åbne en TCP-socket.

Husk at $ip skal være en IP-adresse, og ikke et hostnae. Ellers tæller du tiden for DNS-opslag med.
Avatar billede eflow Nybegynder
20. august 2001 - 21:00 #3
myplacedk>>...jeg ville godt have ping tiden....men ellers så smid det lige ind i det jeg har lavet ordi lige nu ser det der sort ud for mig...

bigo>>Det skal ligge på f2s.com der ligger ping.exe vel ikke ?
Avatar billede bigo Nybegynder
20. august 2001 - 22:28 #4
aner det simpelthen ikke.. men hvis det er en windows dåse den ligger på så henter den vel det der ligger i path.. og ping plejer at ligge i path ;-)
Avatar billede eflow Nybegynder
21. august 2001 - 20:13 #5
den vil sq ikke rigtigt Fortelle mig hvad ping tiden er ?
den laver bare et par linjer og skriver Done...
Avatar billede myplacedk Nybegynder
21. august 2001 - 20:16 #6
Et par linjer hvad?

hvis det er unix, skal det bare være \"ping\" i stedet for \"ping.exe\".
Avatar billede eflow Nybegynder
21. august 2001 - 20:23 #7
ja den skriver bare det her:


Done...
Avatar billede myplacedk Nybegynder
21. august 2001 - 22:28 #8
Du har nok ikke mulighed for at køre programmer fra PHP.
f2s.com, er det ikke sådan et gratis sted? Så er det meget usandynligt du får det til virke.
Avatar billede bigo Nybegynder
21. august 2001 - 22:57 #9
hmm.. den kode jeg gav virker fino fino på min nt4.0.. men som sagt.. hvis det er en unix.. så er det kun ping - uden .exe..

Min dåse kører med en totalt standard opsætning, både hvad php, mysql, iis osv. angår.. jeg har ikke været inde og sætte nogle specielle rettigheder på hverken brugere, dir´s eller filer.
Avatar billede eflow Nybegynder
22. august 2001 - 07:22 #10
hmm...jeg kører det på en Apache på Win me...med php....er det det ?
Avatar billede bigo Nybegynder
22. august 2001 - 09:36 #11
kunne være det.. men jeg er ikke sikker..
Avatar billede eflow Nybegynder
22. august 2001 - 13:40 #12
jeg har nu også prøvet på Theroom.dk det vil bare ikke virke...
Avatar billede myplacedk Nybegynder
22. august 2001 - 14:31 #13
Prøv det her. Det virker på windows 2000 og linux, begge med ca. standard konfigurationer:
<?
if (strtoupper(substr(PHP_OS, 0, 3)) == \'WIN\')
        $command = \'ping.exe -n 1\';
else
        $command = \'ping -c 1\';
$host = \'eksempel.dk\';
$host = escapeshellcmd($host);
$ping = popen($command.\' \'.$host, \'r\');
while (!feof ($ping)) {
        $buffer = fgets($ping, 4096);
        echo $buffer;
        flush();
}
pclose($ping);
?>
Avatar billede eflow Nybegynder
24. august 2001 - 16:33 #14
weee...det virker...men jeg ville gerne kun have ping tiden....kan du lave det så den kommer i en variabel der hedder $pingtime ?
Avatar billede eflow Nybegynder
24. august 2001 - 16:37 #15
jeg har en idé om hvordan det skal laves...man finder det sted i variablen hvor der står time og tager så det lige efter = tegnet hen til der hvor der står ms ?

noget der er let at lave ?
Avatar billede eflow Nybegynder
24. august 2001 - 18:04 #16
hmm....jeg har bikset det her sammen:

<?
if (strtoupper(substr(PHP_OS, 0, 3)) == \'WIN\')
        $command = \'ping.exe -n 1\';
else
        $command = \'ping -c 1\';
$host = \'195.184.125.74\';
$host = \'195.184.125.74\';
$host = escapeshellcmd($host);
$ping = popen($command.\' \'.$host, \'r\');
while (!feof ($ping)) {
        $buffer = fgets($ping, 4096);
        ereg(\" time=[0-9]+\",$buffer,$pingtime);
        $value = substr($pingtime[0],1,strlen($pingtime[0]));
        $streng = $value[5].$value[6].$value[7].$value[8].\"&nbsp;\";
        flush();
        }
        echo $streng;
pclose($ping);
?>

og det virker fint...meeen....man kan vel ikke pinge på port via ping.exe vel ?
Avatar billede otis Nybegynder
24. august 2001 - 18:08 #17
lytter
Avatar billede eflow Nybegynder
24. august 2001 - 18:11 #18
det er da bare helt iorden...meen..jeg ville da blive mere glad vis du kunne svare på mit spm....

jeg kan jo så også sige til dig at du kan lytte helt lyd løst bare ved at trykke udfør...(kun hvis Send en e-mail til mig,..... er markeret)

;-)
Avatar billede eflow Nybegynder
24. august 2001 - 18:33 #19
nu har jeg da fundet ud af...

otis>> du vil vel se det ikke ?

jeg giver myplace.dk point da hans sudste indlæg hjalp mig mega meget
Avatar billede eflow Nybegynder
24. august 2001 - 18:34 #20
hmm...dooh...glemte det med porten...det har jeg ikke fået ordnet...
Avatar billede myplacedk Nybegynder
24. august 2001 - 23:50 #21
Normalt er der kun TCP og UDP at vælge imellem. Begge dele bruger begrebet \"porte\", hvor der er omkring 65.000 at vælge imellem.
Der er dog også en tredje protokol, nemlig ICMP. ICMP har ikke noget der hedder porte, men et lille sæt pakketyper.
Fx. kan man sende en ICMP-pakke af typen \"echo request\". Når et system modtager sådan en pakke, kan det vælge at svare med en \"echo reply\".
Det, der så er fidusen er, at hvis man sender et echo request, og modtager et echo reply, så må man jo være i forbindelse med maskinen, og netværket virker.
Dette gøres nemmest med et lille værktøj, som hedder \"ping\". Det er vældig smart, for det kan en masse ting ud over at se om der er forbindelse - den mest kendte ekstra funktion er, at måle tiden fra man sender et request til man modtager et reply.

Dette værktøj er blevet så udbredt, at request/reply-tricket i dag kaldes \"at pinge\".

Jeg håber det hjælper dig med at forstå TCP/IP bare lidt bedre. :)
Avatar billede eflow Nybegynder
24. august 2001 - 23:53 #22
ja...det hjalp meget...men....kan jeg se ping tiden hvis jeg pinger via TCP protokolen ?
Avatar billede otis Nybegynder
25. august 2001 - 03:14 #23
eflow, jo jeg vil gerne se ? hehe
Avatar billede myplacedk Nybegynder
25. august 2001 - 08:44 #24
At \"pinge\" er noget der foregår via ICMP. Punktum.

Men som beskrevet ovenfor kan du lave noget der minder lidt om.
Hvis du åbner en socket mod en tcp-port, vil der blive sendt flere pakker frem og tilbage. Dette kan du tage tid på. Men jeg er faktisk i tvivl om, om det altid er HELT præcis det samme der sker, så jeg ved ikke helt hvor brugbart det er.

Der er nogen protokoller, som ligger oven på TCP eller UDP, som tilbyder noget de kalder ping.
Mange netværksspil giver nogle såkaldte \"ping-tider\". Det er ikke helt rigtigt at kalde det at pinge, men det minder da meget om.

Hvis du skal lave sådan noget, er du nødt til lige at fortælle hvad der foregår på den port, du vil pinge. :)
Avatar billede eflow Nybegynder
25. august 2001 - 10:39 #25
jeg skal bruge det på et system der skal ligge på f2s.com der skal jeg kunne se om min computer f.eks er online herhjemme.... så det er mest på port 21,80,3306 og 8080.
8080 er min apache webserver...resten kan du gætte dig til....
Avatar billede myplacedk Nybegynder
25. august 2001 - 11:51 #26
21 må være ftp, port 80 og 8080 er vel http.
3306 siger mig ikke noget.

Men hvis du bare skal se om din computer er online, har du vel ikke brug for en ping-tid?

Det eneste du så skal gøre er, at prøve at åbne en socket. Hvis det lykkes, må din computer vel være online.
Avatar billede eflow Nybegynder
25. august 2001 - 11:56 #27
det ved jeg godt...men det skal være lidt advanceret....

du kan se den kode jeg bruger nu her:
http://eflow.dyndns.dk:8080/index.phps
og se det i aktion her:
http://eflow.dyndns.dk:8080/index.php
Avatar billede myplacedk Nybegynder
25. august 2001 - 12:00 #28
Øhm... Okay. Hvad er så problemet?
Avatar billede eflow Nybegynder
25. august 2001 - 12:12 #29
jeg vil have den til kun at køre på en protokol....både med ping tid eller lign. og port
Avatar billede myplacedk Nybegynder
25. august 2001 - 12:23 #30
Jamen så bare tag tid på hvor lang tid det tager, at åbne en socket! :)
Avatar billede eflow Nybegynder
25. august 2001 - 14:09 #31
hmm....det prøver jeg...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester