[php]Pingen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • rhodium
  • Registratie: Augustus 2003
  • Laatst online: 00:54
Ik zit met het volgende.

Ik heb dit scriptje:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?
                  
            include('config/config.php');
                  
                    $query="SELECT id, ip, port, titel FROM servers ORDER BY id LIMIT 0,10" or die ( mysql_error() );
                        $result=mysql_query($query) or die ( mysql_error() );
                        while ($row = mysql_fetch_row($result)){
                        
                        echo"$row[3]";
                        echo"<br>";
                        
                        $ip = "$row[1]";
                        $port = "$row[2]";
                        
                        $fp = fsockopen ("$ip", "$port", $errno, $errstr, 10); 
                        if (!$fp) { 
                          echo "[img]\"offline.gif\"[/img]<br>\n"; 
                        } else { 
                          echo "[img]\"online.gif\"[/img]<br>\n"; 
                          fclose($fp); 
                        } 
                        
                        echo"<br>";
                        
                        }
                  
?>


Gewoon heel simpel ping scriptje alleen wanneer een server offline is krijg ik helaas dus

"Warning: fsockopen(): unable to connect to localhost:3308 in E:\apache\Apache2\htdocs\ping.php on line 15"

Iemand een idee omdat optelossen want voor de rest werkt die super alleen hij laat een error zien als er iets offline is.

Als een server offline is laat die wel een offline plaatje zien.

Iemand een idee hoe dit optelossen is?

Acties:
  • 0 Henk 'm!

Verwijderd

Het kan door een @ voor de fsockopen functie te zetten, maar véél netter is om een error_handler functie te maken, zie ook de error handling functions in de PHP manual.

Acties:
  • 0 Henk 'm!

  • rhodium
  • Registratie: Augustus 2003
  • Laatst online: 00:54
Stom... heb ik gewoon weg niet meer aan die @ gedacht.. zit echt te veel met me gedachten bij de verkeerde dingen :+

Acties:
  • 0 Henk 'm!

Verwijderd

Ik heb nu al spijt dat ik het heb genoemd.
Waarom ga je niet voor de veel nettere oplossing? Errors negeren is niet tof.

Acties:
  • 0 Henk 'm!

  • Thijsmans
  • Registratie: Juli 2001
  • Laatst online: 21:35

Thijsmans

⭐⭐⭐⭐⭐ (5/5)

Omdat het niet nodig is. Imho zijn de error-handleing-functies alleen als het echt cruciaal is als er een fout optreedt. Hier is het vrij vaak dat er een fout zal zijn, en daar wordt op ingesprongen door een offline-plaatje te laten zien.

Dus, netter: ja, nodig: mwoah :)

Daarbij weet ik niet of pingen niet veel langzamer is dan een (.txt)-bestandje op die server te zetten en te checken of die kan worden gevonden :)

[ Voor 1% gewijzigd door Thijsmans op 09-01-2004 21:10 . Reden: fot? fot? fout! ]

Privacy-adepten vinden op AVGtekst.nl de Nederlandse AVG-tekst voorzien van uitspraken en besluiten.


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 22:43
Je methode heeft meer weg van een portscan dan van een ping (waaronder meestal een ICMP ping verstaan wordt).

Verder is er niets mis met die @; die is speciaal voor dit soort gevallen bedoeld. De default error messages geven nuttige informatie voor wanneer je niet zelf over foutafhandeling na hebt gedacht. Dat betekent dan ook dat het alleen geoorloofd is om de default error messages te onderdrukken als je de foutsituatie zelf afhandelt en dat doe je hier dan ook.

Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Mocht je niet willen portscannen maar echt willen pingen is onderstaande methode wellicht een oplossing
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php // Pc's die worden gechecked...
$addresses = array (
        "ROUTER"                        => "192.168.1.1",
        "SPIDER008"                     => "192.168.1.12",
        "SPIDER007"                     => "192.168.1.16",
        "DHCP1"                         => "192.168.1.20",
        "DHCP2"                         => "192.168.1.21",
        "DHCP3"                         => "192.168.1.22"
);
        while (list($host, $ip) = each($addresses)){
                system("ping -c1 -w1 $ip >/dev/null", $result);
?>
                        <tr>
                                <td><?=$host?></td>
                                <td><?=$ip?></td>
                                <td><font color="<?=
($result)?'red">Offline"':'green">Online'
?></font></td>
                        </tr>
<?      } ?>
:)

[ Voor 132% gewijzigd door Spider.007 op 09-01-2004 22:06 ]

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

  • Suepahfly
  • Registratie: Juni 2001
  • Laatst online: 17-09 17:05
Spider.007 schreef op 09 januari 2004 @ 21:58:
Mocht je niet willen portscannen maar echt willen pingen is onderstaande methode wellicht een oplossing
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php // Pc's die worden gechecked...
$addresses = array (
        "ROUTER"                        => "192.168.1.1",
        "SPIDER008"                     => "192.168.1.12",
        "SPIDER007"                     => "192.168.1.16",
        "DHCP1"                         => "192.168.1.20",
        "DHCP2"                         => "192.168.1.21",
        "DHCP3"                         => "192.168.1.22"
);
        while (list($host, $ip) = each($addresses)){
                system("ping -c1 -w1 $ip >/dev/null", $result);
?>
                        <tr>
                                <td><?=$host?></td>
                                <td><?=$ip?></td>
                                <td><font color="<?=
($result)?'red">Offline"':'green">Online'
?></font></td>
                        </tr>
<?      } ?>
:)
MAg daar bij even op merken dat de meeste host het niet toe staan om functies als
exec(), shell_exec(), system() uit te voeren.
En dit dus alleen werkt als PHP niet in save_mode draait en Apache lees en uitvoer rechten heeft op de dir waar die executabels in staan.
Iets wat imo nooit mag.

Je wilt als hoster zijnde niet dat je klanten allerlei (malafide) progsels op je server gaan draaien.

Acties:
  • 0 Henk 'm!

  • rhodium
  • Registratie: Augustus 2003
  • Laatst online: 00:54
Suepahfly schreef op 09 januari 2004 @ 23:34:
[...]


MAg daar bij even op merken dat de meeste host het niet toe staan om functies als
exec(), shell_exec(), system() uit te voeren.
En dit dus alleen werkt als PHP niet in save_mode draait en Apache lees en uitvoer rechten heeft op de dir waar die executabels in staan.
Iets wat imo nooit mag.

Je wilt als hoster zijnde niet dat je klanten allerlei (malafide) progsels op je server gaan draaien.
en btw dat werkt niet eens op een windows bak. Dus wat heb ik er aan :)

Het scriptje heb ik zodat ik kan zien of me ftp, gamebak, fileserver ect nog allemaal in de lucht zijn :)

Acties:
  • 0 Henk 'm!

Verwijderd

als je wilt heb ik dit scrippie voor je...

http://www.nitroserve.com/status.php

Is best groot dus ga hem hier niet posten...
mail maar naar sjender@nitroserve.com als je hem wilt...

Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Rddr schreef op 10 januari 2004 @ 00:42:
[...]


en btw dat werkt niet eens op een windows bak. Dus wat heb ik er aan :)

Het scriptje heb ik zodat ik kan zien of me ftp, gamebak, fileserver ect nog allemaal in de lucht zijn :)
Het is wel aan te passen zodat het op een windowsbak draait; maar als jij gelukkig bent met je huidige script zou ik daar absoluut geen moeite voor doen ;)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

  • henkleerssen
  • Registratie: December 2000
  • Niet online

henkleerssen

Your life is as you narrate it

Hier http://nl3.php.net/manual/nl/printwn/function.fsockopen.php staat ook uitgelegd welke errors en wanneer deze worden opgegooid..handig voor error handling.
Pagina: 1