Hello, I have a problem wich i cant solve because my knowledge of PHP is to poor at this moment. So i hope someone can help me out with a problem and give me a clear solution. This script is working fine when the hosting pc is turned on. The script will clearly show if the game is running or not. But when the hosting pc is turned of i get a error on line 11 wich says: Fatal error: maximum execution time of 30 seconds.... on line 11. Can somebody please help me with this ? Here is the 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)); // testing HERE IS WHERE IT GOES WRONG !!!! 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); // Serverinfo $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>"; ; ?> Code (markup):
You can try some more error checks. Second: why do you do the same connect -> write -> read twice? <?php $s_port = 12203; // Serverport $s_ip = "82.217.212.106"; // Server-IP $timeout = 30; // CONN WRITE READ [1] $s_con = fsockopen("udp://".$s_ip, $s_port,$errno, $errstr, $timeout); // $s_con == false if fsockopen failed if(!$s_con) die(msg_server('Unable to connect with fsockopen [1];; '.$errstr)); // fwrite return false on write error, else it return how many bytes written if(fwrite($s_con, "ÿÿÿÿ". chr (0x02). "getstatus". chr (0x00))===FALSE) die(msg_server('Unable to write to $_con [1]')); // fread return false on read error, else it return the read string if(($ffb = fread($s_con,4))===FALSE) die(msg_server('Unable to read from $_con after write. [1]')); // stream_get_meta_data is same as socket_get_status $meta_data = stream_get_meta_data($s_con); if($meta_data["unread_bytes"]==0) die(msg_server('No reply, or('.$ffb.')')); $beginnen = fread($s_con, $meta_data['unread_bytes']); fclose($s_con); $data = explode("\n", $beginnen); // Serverinfo // CONN WRITE READ [2] $s_con = fsockopen("udp://".$s_ip, $s_port,$errno, $errstr, $timeout); if(!$s_con) die(msg_server('Unable to connect with fsockopen [2];; '.$errstr)); if(fwrite($s_con, "ÿÿÿÿ". chr (0x02). "getstatus". chr (0x00))===FALSE) die(msg_server('Unable to write to $_con [2]')); // bytes lezen en verbindingsopbouw if(($ffb = fread($s_con,4))===FALSE) die(msg_server('Unable to read from $_con after write. [2]')); $meta_data = stream_get_meta_data($s_con); if($meta_data["unread_bytes"] == 0) die(msg_server('No data, sorry. ('.$ffb.')')); $beginnen = fread($s_con, $meta_data['unread_bytes']); fclose($s_con); msg_server('Playing Mohaa or Spearhead'); // Wrapped it up into a function instead. // Your table is badly formatted by the way // I have at least closed it for you function msg_server($server_status,$errmsg=''){ echo "<div align='left'> <table width='20%' border='1' cellpadding='0' cellspacing='0' bordercolor='#465461'> <tbody> <tr> <td colspan='3' style='text-align:center;font-weight:700;'>Hier Plaatje</td> </tr> <tr> <td colspan='3' style='text-align:center;font-weight:700;'>Server Status</td> </tr> <tr> <td style='text-align:center;font-weight:700;border-color:#2D3740;'>".$server_status."</td> <td>Error: ".$errmsg."</td> </tr> </tbody> </table>\n</div>"; } ?> PHP:
Thank you sir ! I have tried youre script, but i still get the same time out error on line 19. What can be wrong ?
set_time_limit(0); error_reporting(0); This seems to work. I will keep it this way until i know another solution, or my knowledge of php is improved. Thank you very much !