Hallo,

(Dit bericht staat ook op een ander forum, voor het geval dat...)

Ik heb eindelijk een werkend script die simpelweg aangeeft of twee games wel of niet online zijn.
Zoals gezegd werkt het perfect totdat de server zelf uitgezet wordt, dus de hostende pc gaat dan uit.
Op dat moment wordt het script traag en krijg ik uiteindelijk een dikke foutmelding omdat hij niets kan vinden.
Fatal error: Maximum execution time of 30 seconds exceeded..bla...bla

Nu zit ik helemaal vast want het is dan eigenlijk de bedoeling dat hij een echo geeft dat er geen server is.
Kan iemand mij vertellen wat er bij moet en waar ?

Bedankt alvast !

hier is het script:

<?php

$s_port = 12203; // Serverport
$s_ip = "82.217.212.106"; // Server-IP
$s_con = fsockopen("udp://".$s_ip, $s_port);
fwrite($s_con, "ÿÿÿÿ". chr (0x02). "getstatus". chr (0x00));

// testen verbindings opbouw

fread($s_con, 4);
$status = socket_get_status($s_con);

// SERVER DOWN

if($status["unread_bytes"] == 0)
{
echo "<div align='left'>
<table width='20%' border='1' cellpadding='0' cellspacing='0' bordercolor='#465461'>
<tr>
<td colspan='3'> <div align='center'><strong>Hier Plaatje</strong></div></td>
</tr>
<tr>
<td colspan='3'> <div align='center'><strong>server
status</strong></div></td>
</tr>
<tr bordercolor='#2D3740'>
<td align='center'><strong>Server down</strong></td>";
die();
}

$beginnen = "";

do
{
$beginnen .= fread($s_con, 1);
$status = socket_get_status($s_con);
}
while($status["unread_bytes"] != 0);

fclose($s_con);

$data = explode("\n", $beginnen);


// Serverinformatie

$s_con = fsockopen("udp://".$s_ip, $s_port);
fwrite($s_con, "ÿÿÿÿ". chr (0x02). "getstatus". chr (0x00));

// bytes lezen en verbindingsopbouw

fread($s_con, 4);
$status = socket_get_status($s_con);

if($status["unread_bytes"] == 0)
{
echo "no info. sorry";
die();
}

$beginnen = "";

do
{
$beginnen .= fread($s_con, 1);
$status = socket_get_status($s_con);
}
while($status["unread_bytes"] != 0);

fclose($s_con);


echo"
<div align='left'>
<table width='20%' border='1' cellpadding='0' cellspacing='0' bordercolor='#465461'>
<tr>
<td colspan='3'> <div align='center'><strong>hier plaatje</strong></div></td>
</tr>
<tr>
<td colspan='3'> <div align='center'><strong>server
status</strong></div></td>
</tr>
<tr bordercolor='#2D3740'>
<td align='center'><strong>Playing Mohaa or Spearhead</strong></td>";

;
?>
Doe wat aan error afhandeling.

Bijvoorbeeld geeft fsockopen() een FALSE terug als het niet gelukt is. Daar, en bij nog meer punten, kun je dus op controleren.
Ik post hem hier ook nog maar ff, misschien helpt hij ook voor jouw probleem:
<?php
ini_set ('display_errors', 1);
error_reporting (E_ALL);
define('SERVER', 'www.testdomein.nl');
define('PORT', 80);
$sock = socket_create(AF_INET, SOCK_STREAM, 0);
if (!$sock) {
echo 'Fatal error: Couldn\'t create socket';
exit;
}
if (!socket_connect($sock, SERVER, PORT)) {
echo 'Server staat uit';
}
else {
echo 'Server staat aan';
}
?>
Met dank aan Legolas.
Ik heb het een en ander met regel nummer 11 geprobeerd (want daar komt de foutmelding op) maar het wil niet echt lukken. Het lijkt wel of hij negeert wat er achter gezet wordt en ik krijg dezelfde melding weer.
Ik ben hier helaas nog niet handig in...
iemand die me verder kan helpen ?

Dit was mijn laatste poging in het script op regel 11:

if ($status = socket_get_status($s_con)) {
fread($s_con, 4);
$status = socket_get_status($s_con);
} else {
echo "Server is down.";
}

maar dat negeerd hij.
als je het zo doet:

$status = socket_get_status($_con);
if(!$status) {
echo "Server is down.";
} else {
echo "Server is niet down.";
}
Het werkt wel maar ik krijg twee fout meldingen.
_con wordt toch gedefineerd dacht ik.

Notice: Undefined variable: _con in ..... on line 10

Warning: socket_get_status(): supplied argument is not a valid stream resource in ..... on line 10
Server is down.

Kan iemand me verder helpen please ?
Moet $s_con zijn ... Lettertje vergeten :)
10 $status = socket_get_status($_con);
11 if(!$status) {
12 echo "Server is down.";
13 } else {
14 echo "Server is niet down.";
15 }

Notice: Undefined variable: _con in ..... on line 10

Warning: socket_get_status(): supplied argument is not a valid stream resource in ..... on line 10

Zo staat het er, waar moet hij ( de $_con ) dan staan volgens u ?

Of gaat het mis op regel 5 van het script waar $_con aangegeven wordt ?
$status = socket_get_status($s_con);
if(!$status) {
echo "Server is down.";
} else {
echo "Server is niet down.";
}

dat dan

Reageren