php ping

Diskussion av datorer, inte bara i rent tekniska aspekter utan även i politiska och filosofiska.

Moderator: Moderatorgrupp

sigun004
Gammal medlem
Gammal medlem
Inlägg: 78
Blev medlem: 2006-09-28 19:09
Svar: 0

php ping

Inlägg av sigun004 »

hej

jag vill ha hjälp med ett ping skript i php

det ska vara så att när jag går in på min hemsida så ska det stå vilka ip adressr som är online i en lista tex:
192.168.0.111 is online
192.168.0.101 is offline
och så vidare



och så vidare men jag hittar ingen guide eller skript som funkar kan någon hjälpa?


PS: jag vill inte kolla alla ip adresser, jag vill bara skriva in ip adresserna på något sätt i php documentet som ska visas inte alla.
sigun004
Användarens profilbild
Marcus
Administratör
Administratör
Inlägg: 4321
Blev medlem: 2004-01-07 22:12
Svar: 0
Ort: Skövde

Inlägg av Marcus »

Jag hittar bara 4 ping-kommandon in PHP.
  • imap_ping — Check if the IMAP stream is still active.
  • maxdb_ping — Pings a server connection, or tries to reconnect if the connection has gone down. (MaxDB)
  • mysql_ping — Ping a server connection or reconnect if there is no connection. (MySQL)
  • pg_ping — Ping database connection (PostgreSQL)
Men jag tror kanske att det här kan vara något som hjälper dig en bit på vägen:

http://se.php.net/manual/en/function.shell-exec.php

Sätt upp en array med de IP-adresser du vill kolla, och så loopar du igenom arrangen och kör:

Kod: Markera allt

$ip = array('192.168.0.111', '192.168.0.101'); // Fyll på denna...
for ($i = 0; $i < count($ip); $i++) {
   $output = shell_exec('ping ' . $ip[$i]);
   // gör vad som behövs med $output...
}
Hoppas det är till någon hjälp.

/marcus
Marcus Farrington - Administratör på phpBB Sverige
OBS! På förekommen anledning ges ingen support via PM.

Webb- & Drupalutvecklare på Webbyrå Grebban.
Användarens profilbild
tumba25
Hedersmedlem
Hedersmedlem
Inlägg: 2097
Blev medlem: 2007-04-18 09:38
Svar: 0
Ort: Kokkola, Finland.

Inlägg av tumba25 »

Om du menar online på forumet så är det ju enklast att kolla i tabellen phpbb_sessions. session_ip och session_time så får du anta att dom som inte varit aktiva på några minuter inte är online längre.

Om du vill kolla på hela siten så bör du nog skapa en tabell i databasen för det och stoppa in ip och tid i den vid alla sidvisningar. Använd session_id så du uppdaterar fälten istället för att skapa nya om besökaren bläddrar runt en stund. Sen kollar du med ditt skript likadant som i exemplet ovan.

Skriptet kan ju kolla båda tabellerna så ser du både dom som är på forumet och dom som är på övriga siten.

Om det är så du menar.

/J
sigun004
Gammal medlem
Gammal medlem
Inlägg: 78
Blev medlem: 2006-09-28 19:09
Svar: 0

Inlägg av sigun004 »

tumba 25 läs vad jag skrev en gång till...
sigun004
Användarens profilbild
tumba25
Hedersmedlem
Hedersmedlem
Inlägg: 2097
Blev medlem: 2007-04-18 09:38
Svar: 0
Ort: Kokkola, Finland.

Inlägg av tumba25 »

Kan inte läsa genom allt så noga på första försöket. :)

/J
Användarens profilbild
Kail
Administratör
Administratör
Inlägg: 2935
Blev medlem: 2003-06-03 13:53
Svar: 0
Ort: Linköping/Stockholm

Inlägg av Kail »

Detta blir ju svårt eftersom användare ofta har olika IP-adresser, ibland samma som andra pga av internetoperatörer har en pool med IP-adresser som de delar ut ur när du ansluter dig. Du kan alltså inte binda specifika användare till specifika IP-adresser.

Enklast är att lista "Who's Online", då ser du vilka användare som bläddrar runt och vilket IP de ansluter från.
Jakob Persson - Grundare av phpBB Sverige - IT-konsult - http://www.jakob-persson.com
The Complete phpBB Template Design Guide
sigun004
Gammal medlem
Gammal medlem
Inlägg: 78
Blev medlem: 2006-09-28 19:09
Svar: 0

Inlägg av sigun004 »

men om jag lägger php filen på en server i mitt nätverk och har fast ip på datoerna så kan jag känna av vilka som är online eller offline.
sigun004
Användarens profilbild
Kail
Administratör
Administratör
Inlägg: 2935
Blev medlem: 2003-06-03 13:53
Svar: 0
Ort: Linköping/Stockholm

Inlägg av Kail »

Ja, i en sådan miljö är det möjligt.

Jag föreslår isf att du skapar en tabell i databasen där du registrerar det IP en person ansluter med, och uppdaterar informationen varje gång personen loggar in (dvs IP <-> UID).

I adminpanelen har du sedan en sidan som listar alla användare och använder sig av informationen i sessions och tabellen du skapade (IP <-> UID) för att lista vilka som är anslutna och vilka som inte är det.
Jakob Persson - Grundare av phpBB Sverige - IT-konsult - http://www.jakob-persson.com
The Complete phpBB Template Design Guide
sigun004
Gammal medlem
Gammal medlem
Inlägg: 78
Blev medlem: 2006-09-28 19:09
Svar: 0

Inlägg av sigun004 »

jag väljer nog det första alternativet efter som jag är inte jätte bra i php och är slö
sigun004
sigun004
Gammal medlem
Gammal medlem
Inlägg: 78
Blev medlem: 2006-09-28 19:09
Svar: 0

Inlägg av sigun004 »

hjälp mig med kod då då kail
sigun004
Användarens profilbild
Marcus
Administratör
Administratör
Inlägg: 4321
Blev medlem: 2004-01-07 22:12
Svar: 0
Ort: Skövde

Inlägg av Marcus »

I en sådan miljö fungerar även min lösning. :D

/marcus
Marcus Farrington - Administratör på phpBB Sverige
OBS! På förekommen anledning ges ingen support via PM.

Webb- & Drupalutvecklare på Webbyrå Grebban.
sigun004
Gammal medlem
Gammal medlem
Inlägg: 78
Blev medlem: 2006-09-28 19:09
Svar: 0

Inlägg av sigun004 »

ja, ska bara få ihop output är inte så bra på det men klarar nog det...
sigun004
Användarens profilbild
Kail
Administratör
Administratör
Inlägg: 2935
Blev medlem: 2003-06-03 13:53
Svar: 0
Ort: Linköping/Stockholm

Inlägg av Kail »

sigun004 skrev:hjälp mig med kod då då kail
Nej, något får du göra själv. :)

Jag kan ge dig råd men jag kommer inte skriva någon kod, det har jag faktiskt inte tid till. Kanske tumba25 kan hjälpa dig komma igång.

Det du behöver till att börja med är en databastabell med uid och ip (int 16).
Jakob Persson - Grundare av phpBB Sverige - IT-konsult - http://www.jakob-persson.com
The Complete phpBB Template Design Guide
Användarens profilbild
tumba25
Hedersmedlem
Hedersmedlem
Inlägg: 2097
Blev medlem: 2007-04-18 09:38
Svar: 0
Ort: Kokkola, Finland.

Inlägg av tumba25 »

Om du ska köra detta på din lokala dator för ditt eget hemma-nätverk kan du lika gärna strunta i databaser och hårdkoda ip'na i skriptet.

Använd Marcus exempel och lägg in ip-numren i en array. Sen när du loopar du genom den skriver du ut x.x.x.x online och/eller x.x.x.x offline beroende på vad output innehåller.

Om du kör

Kod: Markera allt

ping 192.168.0.1
i en cli ser du vad svaret blir när datorn svarar respektive inte svarar.

Om jag skulle skriva något liknande för att använda hemma lokalt tror jag inte att jag skulle välja att köra något via vebbläsaren. Om det är några datorer som inte svarar och du har gott om datorer i nätverket är risken stor för time-out innan skripet är klar.

/J
sigun004
Gammal medlem
Gammal medlem
Inlägg: 78
Blev medlem: 2006-09-28 19:09
Svar: 0

Inlägg av sigun004 »

Kod: Markera allt

markus 

<?
$ip = array('192.168.0.111', '192.168.0.101'); // Fyll på denna...
for ($i = 0; $i < count($ip); $i++) {
$output = shell_exec('ping ' . $ip[$i]);
// gör vad som behövs med $output...
}


Kod: Markera allt

sigun004
om jag väljer maskus alternativ hur ska jag då skriva $output?
någonting i stil med:
if ($output == true){
$screen = $ip is online}
else {
$screen $ip is offline}

echo "$screen"
?>


ser det rätt ut med båda koderna ihop?
sigun004
Skriv svar

Vilka är online

Användare som besöker denna kategori: 1 och 0 gäst