phPing V1.4

Door Chris -, 17 jaar geleden, 9.403x bekeken

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

PHP script bestanden

  1. phping.php

 

Er zijn 18 reacties op 'Phping v14'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Dalando De Zuil
Dalando De Zuil
17 jaar geleden
 
0 +1 -2 -1
Leuk scriptje. Ik wist niet dat je met PHP kon pingen. Weer iets geleerd! =)


17 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 -
17 jaar geleden
 
@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
17 jaar geleden
 
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
17 jaar geleden
 
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
17 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?


17 jaar geleden
 
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
17 jaar geleden
 
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 ;)
Dalando De Zuil
Dalando De Zuil
17 jaar geleden
 
0 +1 -0 -1
Waarom altijd kritiek op mijn scripts ;(
Noppes Homeland
Noppes Homeland
17 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 K
Niels K
17 jaar geleden
 
0 +1 -0 -1
Waarom heb je gekozen voor final method chris?
Chris -
Chris -
17 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.
Thumb nail
Thumb nail
17 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
17 jaar geleden
 
0 +1 -0 -1
Thum, daar wordt meestal een MX lookup voor gebruikt. Want ping wil nog wel eens uit staan.
Niels K
Niels K
17 jaar geleden
 
0 +1 -0 -1
@Chris

Ik vind het een beetje overbodig..:)
Pim -
Pim -
17 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?


17 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?
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Niek s
niek s
17 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.

Inhoudsopgave

  1. phping.php

Labels

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.