Versio

phPing V1.4

Met phPing V1.4 kun je een host (web-adres of IP-adres) "pingen" om te zien of de website reageert.

Het script is in een class gestopt, hoewel de functie eigenlijk maar uit 1 functie bestaat welke uiteindelijk alles doet.

Voorbeeld:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$object
= new phPing('phphulp.nl', 80, 4);
echo 'phPing V1.4<br />';
echo 'Host: '.$object -> host.':'.$object -> port.'<br />';
echo 'Count: '.$object -> count.'<br />';
echo 'Results:<pre>'.print_r($object -> result, true).'</pre>';
?>

Wat als resultaat geeft:
Quote:
phPing V1.4
Host: phphulp.nl:80
Count: 4
Results:

Array
(
[1] => 0.0337s
[2] => 0.0321s
[3] => 0.0354s
[4] => 0.0334s
)


Je kan tevens de poort aanpassen, en hoeveel keer je de host wilt pingen.

Zoals goed is opgemerkt, is dit inderdaad niet een soortgelijke PING als die van jouw computer. Mocht er iemand tijd en zin in hebben, maak er een ;-)

Gesponsorde koppelingen

BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  

PHP script bestanden

  1. phping.php

 

20 reacties op 'phPing V1.4'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Dalando De Zuil
Dalando De Zuil
2 jaar geleden
 
0 +1 -2 -1
Leuk scriptje. Ik wist niet dat je met PHP kon pingen. Weer iets geleerd! =)
TJVB tvb
TJVB tvb
2 jaar geleden
 
1 +1 -1 -1
Als ik http://tools.chris-horeweg.nl/ping.html invoer blijft die laden. (en maar 1 package)
Karl Karl
Karl Karl
2 jaar geleden
 
0 +1 -0 -1
Dit is niet echt ping. Dit is alleen een verbinding proberen te openen met een bepaald adres en poort.
Chris
Chris
2 jaar geleden
 
1 +1 -1 -1
@TJVB:
Quote:
Internal PING results:
PING phphulp.nl (212.79.254.166) 56(84) bytes of data.
64 bytes from web01.halma.nl (212.79.254.166): icmp_seq=1 ttl=60 time=7.81 ms

--- phphulp.nl ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 7.819/7.819/7.819/0.000 ms

----------------------------------------------

phPing V1.4 - 08-09-10 - Chris Horeweg
Target: phphulp.nl
IP-Address: 212.79.254.166
Hostname: web01.halma.nl
Packets: 1
Results:
* Ping 1: 0.0339s

Hier werkt hij, mag ik je vragen welke host je probeert te pingen? Ook niet bestaande hosts weergeeft hij na een paar seconden...

Quote:
Internal PING results:

----------------------------------------------

phPing V1.4 - 08-09-10 - Chris Horeweg
Target: bestaatniethoor.nl
IP-Address: bestaatniethoor.nl
Hostname:
Packets: 1
Results:
Timeout, de host is waarschijnlijk offline!


@Karl: Klopt, dit is inderdaad niet een soortgelijke als de échte PING. Dit is echter wel wat het meest er op lijkt.
Niek s
niek s
2 jaar geleden
 
2 +1 -0 -1
Een website kan een socket accepteren, maar niet reageren op de data die je stuurt, en ook dat is weer protocol afhankelijk.
Daarom is een 'echte' PING ook bedacht: een 'Standaard' manier om daar naar te kijken.

Kijk eens op wikipedia naar ICMP, dan zie je dat een ICMP package eigenlijk niet erg ingewikkeld is, en dan is het misschien de moeite waard om een ECHTE ping te maken?
Dalando De Zuil
Dalando De Zuil
2 jaar geleden
 
0 +1 -4 -1
Misschien leuk, als je geen array wilt terug krijgen, maar een zin, include dan de functie en roep hem met dit aan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$object
= new phPing('site.nl', 21, 10);
echo 'phPing V1.4<br />';
echo 'Host: '.$object -> host.':'.$object -> port.'<br />';
echo 'Packages: '.$object -> count.'<br />';
$values = $object -> result;
while (list($key, $value) = each($values)) {
    echo 'Package '. $key .' did '. $value .' to be send <br>';
}

?>
Niek s
niek s
2 jaar geleden
 
1 +1 -0 -1
LOL @ dat engels van Dalando :P

En die vage while van jou is eigenlijk hetzelfde als
foreach($object->result as $key => $value) {

Dus waarom moeilijk doen dan met list en each op zo'n manier?
Karl Karl
Karl Karl
2 jaar geleden
 
1 +1 -1 -1
Idd, wat Niek hierboven post bedoelde ik dus ook. Een echte ping maken is niet zo lastigEen echte ping maken is niet zo lastig, vernieuwde versie.
Verder is dit script ook weer best wel een verneuking van classes. Het heeft totaal geen toegevoegde waarde. Je zou het hoogstens in een functie kunnen dumpen. Nu krijg je dat soort onzin als Dalando hierboven post.
Niek s
niek s
2 jaar geleden
 
2 +1 -0 -1
Nou dan heb ik bij deze een leuk project verzonnen voor iemand:
Maak een ICMP class, en maak daar een static class (of functie) genaamd Ping om die correct aan te roepen :)

Ik geef je 10 minuten, dan moet het toch wel klaar zijn? :P

PS: Dit is niet bedoeld van 'maak maar', maar voor iemand die het als een leuke uitdaging ziet ;)
TJVB tvb
TJVB tvb
2 jaar geleden
 
0 +1 -0 -1
@Chris
Ik voer op http://tools.chris-horeweg.nl/ping.html het adres http://tools.chris-horeweg.nl/ping.html in. (Dus een ping naar zichzelf.
Na heel veel tijd komt er wel een bericht dat die onbereikbaar is. Ik had niet genoeg geduld.
Dalando De Zuil
Dalando De Zuil
2 jaar geleden
 
0 +1 -0 -1
Waarom altijd kritiek op mijn scripts ;(
Noppes Homeland
Noppes Homeland
2 jaar geleden
 
0 +1 -0 -1
'Waarom altijd kritiek op mijn scripts ;('
Wel dat komt omdat je gewoon niet stil staat bij bepaalde feiten van simpelheid.

----------------------------------------------------
Overigens is de class ook nog eens prut:
- return in de construct
- gebruik van de functie empty

- ongelukige implementatie van de tijdsduur
- onnodig onderdrukken van fouten
Niels Kieviet
Niels Kieviet
2 jaar geleden
 
0 +1 -0 -1
Waarom heb je gekozen voor final method chris?
Chris
Chris
2 jaar geleden
 
0 +1 -0 -1
Ik gebruik het zelf inderdaad ook niet als class :-)

@Niels, omdat hij in mijn geval niet hoeft te worden uitgebreid (extend/implement). Als je het in jouw geval wel wilt uitbreiden of implementeren, moet je de final verwijderen en veranderen naar public.
Thum b
Thum b
2 jaar geleden
 
0 +1 -0 -1
je zou hier ook een e-mail validatie achter kunnen koppelen, explode('@', $input); en dat dan door die class heen halen, en kijken of het bestaat, als dat zo is klopt het e-mail adres waarschijnlijk ook (nog niet duidelijk of hij van de persoon in kwestie is)
en waarschijnlijk wordt langzaam, maar dat hoeft natuurlijk niet
Niek s
niek s
2 jaar geleden
 
0 +1 -0 -1
Thum, daar wordt meestal een MX lookup voor gebruikt. Want ping wil nog wel eens uit staan.
Niels Kieviet
Niels Kieviet
2 jaar geleden
 
0 +1 -0 -1
@Chris

Ik vind het een beetje overbodig..:)
Pim -
Pim -
2 jaar geleden
 
0 +1 -0 -1
Niet alleen overbodig, maar ook onwenselijk. Waarom zou je ooit private of final gebruiken als je daarmee alleen de mogelijkheden van uitbreiding beperkt?
Karl Karl
Karl Karl
2 jaar geleden
 
0 +1 -0 -1
Pim de Haan:
Niet alleen overbodig, maar ook onwenselijk. Waarom zou je ooit private of final gebruiken als je daarmee alleen de mogelijkheden van uitbreiding beperkt?

Omdat het al niks is? Dus wil je het ook niet uitbreiden?
Niek s
niek s
2 jaar geleden
 
0 +1 -0 -1
@Pim: final gebruik je om zogenoemde 'magic numbers' tegen tegaan. Op deze manier zorg je er voor dat het altijd duidelijk is. Het is een constante. Het voordeel van een constante is dat deze nooit aan hoeft worden gepast, en daarom dus 'final'.
Private gebruik je voor methodes die nooit extern gebruikt HOEVEN te worden. Een extend kan altijd natuurlijk, maar er zijn in principe methodes die alleen bestaan voor andere methodes, die alleen nuttig zijn voor die specifieke methode. Die maak je dan natuurlijk private.
Als je wil dat een methode wel aanroepbaar is, maar neit extern gebruikt kan worden maak je deze protected.

Verder: Ja. Final en Private/Protected zijn zonder enige twijfel nuttige keywords.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

  • Details
  • Chris
    Door:
    Chris
  • 2 jaar geleden
  • 1.557 x bekeken