Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Was mach ich falsch?

<html>

<head>

<title>Server-Status</title>

</head>

<body>

<table border="1">

<?php

$fp = @fsockopen("10.71.6.15",80,&$errno,&$errstr,2);

#if(!$fp)

{

echo <tr><td width="100">Server 1 ist</td><td width="100"><font color="red">offline</font></td></tr>;

}

else

{

echo <tr><td width="100">Server 1 ist</td><td width="100"><font color="green">online</font></td></tr>;

}

?>

</table>

</body>

</html>

############ Frage #############

Warum werden 2 Zeilen (Einmal Online ... Offline) angezeigt, das sollte eingendlich in einer zeile stehen?

und warum kommen oben die fehler.....

Ich versteh das nicht wo liegt der Fehler?

Mit freundlichen Grüßen

T-Offline

Geschrieben

versuch mal das # vor dem if zu entfernen. Das # letet einen einzeiligen Kommentar ein, und deshalb findet keine Fall unterscheidung stat.

Und bitte, bitte lass das mit den gemischten html und php.

Geschrieben

sieht es so aus?


; } else { echo ; } ?>

Server 1 ist	offline

Server 1 ist	online

erstens: deine "echo" sind falsch, echo 'text'; nicht echo text;

zweitens: du hast das if auskommentiert, was wohl albern ist.

Geschrieben

OK das mit dem auskommentieren ist schon blöd gelaufen....

Ich stell mich jetzt mal ganz blöd aber warum willste das so schreiben?

Oder steh ich gerade voll auf dem schlauch ... Danke für die Hilfe!

<html>

<head>

<title>Server-Status</title>

</head>

<body>

<table border="1">

<?php

$fp = @fsockopen("127.0.0.1",80,&$errno,&$errstr,2);

if(!$fp)

{

[B]echo '<tr><td width="100">Server 1 ist</td><td width="100"><font color="red">offline</font></td></tr>';[/B]}

else

{

[B]echo '<tr><td width="100">Server 1 ist</td><td width="100"><font color="green">online</font></td></tr>';[/B]

}

?>

</table>

</body>

</html>

Geschrieben

Ok da mir das zu Blöd wurde und ihr auch kein html und php gemischt haben wollt :) habe ich mir mal ein PhP Script zusammen gebaut.

<?php
$info["address"]="127.0.0.1";
$info["port"]="80";
$timeout = 2;
$filetyp="gif";
$pic_online="online.gif";
$pic_offline="offline.gif";
$fp = @fsockopen ($info["address"], $info["port"], $errno, $errstr, $timeout);
if($filetyp=="gif")
{
header("Content-Type: image/gif");
if ($fp)
{
$img=imagecreatefromgif($pic_online);
imagegif($img,'',0);
}else{
$img=imagecreatefromgif($pic_offline);
imagegif($img,'',0);
}
}
imagepng($img,'serverstatus.png',0);
imagedestroy($img);
?>[/PHP]

Nun mal eine Frage wie kann ich auf der Selben seite z.b. die ip 127.0.0.2

127.0.0.3

und so weiter auch noch abfragen?

Geht das überhaupt?

Mit freundlichen Grüßen

T-Offline

Geschrieben

ohne den code jetzt genauer anzusehen, sieht das doch schon viel besser aus.

und so weiter auch noch abfragen?

Geht das überhaupt?

Mit freundlichen Grüßen

T-Offline

sicher geht das, dazu machst du aus dem $info array ein zweidimensionales array nach der art:


$info = array();

$info[0] = array('address' => '127.0.0.1', 'port' => 80);

$info[1] = array('address' => '127.0.0.2', 'port' => 80);

$info[2] = array('address' => '127.0.0.3', 'port' => 80);

und packst die prüfung und ausgabe in eine schleife.

foreach ($info as $key => $aInfo) {

  $fp = @fsockopen($aInfo["address"], $aInfo["port"], $errno, $errstr, $timeout);

  ... hier dann die ausgabe ...

}

Geschrieben

Ok langsam verstehe ich das ganze. So nun noch eins ich will zu jeder ip ein anderes Bild hinterlegen.

Aso ist der code so richtig _n4p_?

<?php
$info = array();
$info[0] = array ('address' => '127.0.0.1', 'port' => 80);
$info[1] = array ('address' => '127.0.0.2', 'port' => 80);
$info[2] = array ('address' => '127.0.0.3', 'port' => 80);
$info[3] = array ('address' => '127.0.0.4', 'port' => 80);
$timeout = 2;
$filetyp="gif";
$pic_online="online.gif";
$pic_offline="offline.gif";
forreach ($info as &key => $aInfo)
{
$fp = @fsockopen ($aInfo["address"], $aInfo["port"], $errno, $errstr, $timeout);
if($filetyp=="gif")
header("Content-Type: image/gif");
if ($fp)
{
$img=imagecreatefromgif($pic_online);
imagegif($img,'',0);
}
else
{
$img=imagecreatefromgif($pic_offline);
imagegif($img,'',0);
}
}
imagepng($img,'serverstatus.png',0);
imagedestroy($img);
?>[/PHP]

Geschrieben

dazu würde ich einfach das $info array erweitern, und zwar halt im die information welches bild gewünscht ist. hier bietet sich auch an die bild namen an das programm anzupassen.

zb: on_server1.gif, off_server1.gif

dann kann ins info array folgendes:


$info[1] = array ('address' => '127.0.0.2', 'port' => 80, 'picture' => 'server2');

und in der ausgabe einfach

    if ($fp) 

    {

        $img=imagecreatefromgif('on_'.$aInfo['picture'].'.gif');

        imagegif($img,'',0);

    }

    else

    {

        $img=imagecreatefromgif('on_'.$aInfo['picture'].'.gif');

        imagegif($img,'',0);

    } 

hast du den code mal getestet? so beim ansehen zweifel ich das das funktioniert.

1) sendest du mehrere header, was üblicherweise mit warnungen quittiert wird

2) versuchst du mehrere bilder gleichzeitig zu erstellen.

ich würde empfehlen, die seite in php zu generieren, am liebsten mit einfachen templates. da du die bilder eh nicht zur laufzeit änderst, solltest du auch auf das imagecreate zeugs verzichten.

Geschrieben (bearbeitet)

OK zu 50% deiner antwort versteht ich nur Bahnhof.... Bin nicht so der Programmier.

Wäre nett wenn du mir das ggf. erklären würdest.

Hier der Aktuelle code:

<?php
$info = array();
$info[0] = array ('address' => '127.0.0.1', 'port' => 80, 'picture' => 'server0');
$info[1] = array ('address' => '127.0.0.2', 'port' => 80, 'picture' => 'server1');
$info[2] = array ('address' => '127.0.0.3', 'port' => 80, 'picture' => 'server2');
$info[3] = array ('address' => '127.0.0.4', 'port' => 80, 'picture' => 'server3');
$info[4] = array ('address' => '127.0.0.5', 'port' => 80, 'picture' => 'server4');
$filetyp="gif";
$pic_online="on_server1.gif";
$pic_offline="off_server1.gif";
foreach ($info as $key => $aInfo)
{
$fp = @fsockopen ($aInfo["address"], $aInfo["port"], $errno, $errstr, $timeout);
if($filetyp=="gif")
header("Content-Type: image/gif");
if ($fp)
{
$img=imagecreatefromgif('on_'.$aInfo['picture'].'.gif');
imagegif($img,'',0);
}
else
{
$img=imagecreatefromgif('off_'.$aInfo['picture'].'.gif');
imagegif($img,'',0);
}
}
imagepng($img,'serverstatus.png',0);
imagedestroy($img);[/PHP]

Wie würdest du das machen?

Bin ich wenn schon auf dem Richtigen weg oder bin ich Hoffnugslos?

Vielen Danke für deiner Schnelle und Nette Hilfe

MfG

T-Offline

Bearbeitet von T-Offline
Geschrieben

So würde es gehen nur es kommen einfach keine Bilder was macht ich denn Falsch?

Danke für denn link aber ich muss das bis ende der Woche geschafft haben und jetzt noch die ganze seite druch lesen Ufff..

Was ich gelesen habe das Gif seid 1.6 nicht mehr drin ist in der GD deswegen habe ich nun jpeg genommen.

Könntest du noch mal drüber schauen wäre wirklich nett!

<?php
$info = array();
$info[0] = array ('address' => 'ip', 'port' => 80, 'picture' => 'server0');
$info[1] = array ('address' => 'ip', 'port' => 80, 'picture' => 'server1');
$info[2] = array ('address' => 'ip', 'port' => 80, 'picture' => 'server2');
$info[3] = array ('address' => 'ip', 'port' => 80, 'picture' => 'server3');
$info[4] = array ('address' => 'ip', 'port' => 80, 'picture' => 'server4');
$info[5] = array ('address' => 'ip', 'port' => 80, 'picture' => 'server5');
$timeout = 2;
$filetyp="gif";
foreach ($info as $key => $aInfo)
{
$fp = "1";
// $fp = @fsockopen ($aInfo["address"], $aInfo["port"], $aInfo["picture"], $errno, $errstr, $timeout);
echo $fp . 'hallo' . $img . '<br>' . "\n";
if ($fp)
{
$img = imagejpeg ( 'server0', 'off_server0.jpeg', 100 ); // $img=("'off_'.$aInfo["picture"].'.gif'");
// imagegif($img,'',0);
}
else
{
$img=('on_'.$aInfo['picture'].'.gif');
imagegif($img,'',0);
}
}
imagepng($img,'serverstatus.png',0);
imagedestroy($img);
?>[/PHP]

MfG

T-Offline

Geschrieben

das mit dem imagejpeg/imagegif usw wird so nix.

das kann man nehmen wenn php EIN bild generieren soll, aber du versuchst mehrere zu generieren.

schnelles einfaches beispiel:


if ($fp) {
echo '<img src="on_'.$aInfo['picture'].'.gif" alt="online" />';
} else {
echo '<img src="off_'.$aInfo['picture'].'.gif" alt="offline" />';
}
[/PHP]

Geschrieben

Jetzt ist folgendes Problem!

Er zeigt die Server immer als Offline an. Es kommt mir so vor als würde er die regel überspringen.

<?php 
$info = array();
$info[0] = array ('address' => 'ip', 'port' => 80, 'picture' => 'server0');
$info[1] = array ('address' => 'ip', 'port' => 80, 'picture' => 'server1');
$info[2] = array ('address' => 'ip', 'port' => 80, 'picture' => 'server2');
$info[3] = array ('address' => 'ip', 'port' => 80, 'picture' => 'server3');
$info[4] = array ('address' => 'ip', 'port' => 80, 'picture' => 'server4');
$info[5] = array ('address' => 'ip', 'port' => 80, 'picture' => 'server5');
$timeout = 10;
$filetyp="gif";
foreach ($info as $key => $aInfo)
{
$fp = "1";
$fp = @fsockopen ($aInfo["address"], $aInfo["port"], $aInfo["picture"], $errno, $errstr, $timeout);
echo $fp . $img . '<br>' . "\n";
if ($fp)
{
echo '<img src="on_'.$aInfo['picture'].'.gif" alt="online" />';
}
else
{
echo '<img src="off_'.$aInfo['picture'].'.gif" alt="offline" />';
}
}
?>[/PHP]

Hmm weiß einer noch ne Rat dreh bald durch wegen so einer ******* anzeige!

Geschrieben

naja, das kommt nun drauf an ^^

hast du das lokal?

steht bei 'address' auch die richtige ip?

und das wichtigste, unterstützt das verwendete php auch fsockopen? phpinfo() hilft, oder einfach mal das @ vor fsockopen weglassen, damit du eventuelle fehlermeldungen siehst.

Geschrieben

Warning: fsockopen() expects at most 5 parameters, 6 given in /var/www/fsock.php on line 14

offline

Warning: fsockopen() expects at most 5 parameters, 6 given in /var/www/fsock.php on line 14

offline

Warning: fsockopen() expects at most 5 parameters, 6 given in /var/www/fsock.php on line 14

offline

Warning: fsockopen() expects at most 5 parameters, 6 given in /var/www/fsock.php on line 14

offline

Warning: fsockopen() expects at most 5 parameters, 6 given in /var/www/fsock.php on line 14

offline

Warning: fsockopen() expects at most 5 parameters, 6 given in /var/www/fsock.php on line 14

offline

Hilft das ?? ^^

lass einfach den $timeout weg am ende der parameterliste dann klappt das.

Geschrieben

richtig, erstmal das timeout streichen. was hat dich bitte auf diese idee gebracht? einfach die tatsache das eins zuviel ist?

ich geb zu mir ists auch erst jetzt aufgefallen, aber wenn dann solltest du das $aInfo["picture"] nicht an fsockopen übergeben, das hat damit nix zu tun ..

also: $fp = @fsockopen ($aInfo["address"], $aInfo["port"], $errno, $errstr, $timeout);

das timeout ist aber scho wichtig o.0

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...