Показать сообщение отдельно

  #8538  
Старый 07.02.2009, 10:04
spamoney
Участник форума
Регистрация: 26.12.2006
Сообщений: 107
С нами: 10196899

Репутация: 27
По умолчанию

Всем привет возникла следующая проблема: есть скрипт:

Код:
<?php 
print "php_sockets.dll - "; 
if(extension_loaded('sockets')) print "loaded<br><br><br>"; 
else print "not loaded"; 

$servers='85.142.54.217:27015';
$server = explode(":",$servers);
$adress=$server[0];
$port=$server[1];

$data=monitor_server($adress, $port, 'halflife', 'info');

print_r ($data);
function monitor_server($ip, $port, $game, $request)    {
		$fp = @fsockopen("udp://$ip", $port, $errno, $errstr, 1);
		if (!$fp) return FALSE;
		stream_set_timeout($fp, 1, 0);
		stream_set_blocking($fp, true);  
	 if (($request == "settings" || $request == "players")) {
	    $challenge_code = "\xFF\xFF\xFF\xFF\x57"; 
	    fwrite($fp, $challenge_code);
	    $buffer = fread($fp, 4096);
	    if (!trim($buffer)) { fclose($fp); return FALSE; }
		$challenge_code = substr($buffer, 5, 4);
    	}
		if ($request == "info") $challenge = "\xFF\xFF\xFF\xFFTSource Engine Query\x00";
		if ($request == "players") $challenge = "\xFF\xFF\xFF\xFFU".$challenge_code;
		if ($request == "settings") $challenge = "\xFF\xFF\xFF\xFFV".$challenge_code;
		fwrite($fp, $challenge);
		$buffer = fread($fp, 4096);
		if (!$buffer) { fclose($fp); return FALSE; }     
		if ($request == "settings")	{
		$second_packet = fread($fp, 4096);
		if (strlen($second_packet) > 0)	{
		$reverse_check = dechex(ord($buffer[8]));      
		if ($reverse_check[0] == "1")	{
		$tmp = $buffer;                 
		$buffer = $second_packet;
		$second_packet = $tmp;
		}
		$buffer = substr($buffer, 13);         
		$second_packet = substr($second_packet, 9);   
		$buffer = trim($buffer.$second_packet);
		 }
		 else	$buffer = trim(substr($buffer, 4));
		 }
		 else	$buffer = trim(substr($buffer, 4)); 
		 fclose($fp);
		 if (!trim($buffer)) return FALSE;
		 
		 
		 if ($request == "info") {
		 unset($data);
		$tmp = explode("\x00", $buffer);
		$place = strlen($tmp[0].$tmp[1].$tmp[2].$tmp[3].$tmp[4]) + 5;
		$data['gamemod'] = $tmp[3];
		$data['hostname'] = $tmp[1];
		$data['mapname'] = $tmp[2];
		$data['players'] = ord($buffer[$place]);
		$data['maxplayers'] = ord($buffer[$place + 1]);
		$data['password'] = ord($buffer[$place + 5]);
		//$data['cs_players']	= $cs_players;
		$data['ip'] = $ip;
		$data['port'] = $port; 
		$data['datatype'] = $buffer[0];               // m for steam info
		$data['version'] = ord($buffer[$place + 2]); // Network Version
		$data['description'] = $tmp[4];
		$data['server_type'] = $buffer[$place + 3];      // D edicated or L isten
		$data['server_os'] = $buffer[$place + 4];      // W indows or L inux
		$data['server_secure'] = ord($tmp[14]);            // VAC
		$exmpl = array_keys($tmp);
		if(in_array("15", $exmpl)) $data['server_bots'] = ord($tmp[15]);            // Number of Bots
		else $data['server_bots']=0;
		return $data;  
		}
		
		
		if ($request == "players") {
		$player_number = 0;
		$position = 2;
		do {
		$player_number++;
		$player[$player_number]['name']='';                                  
		$player[$player_number]['id'] = ord($buffer[$position]);
		$position ++;                                             
		while($buffer[$position] != "\x00" && $position < 4000) {
		$player[$player_number]['name'] .= $buffer[$position];  
		$position ++;
		}
		$player[$player_number]['score'] = (ord($buffer[$position + 1]))
		+ (ord($buffer[$position + 2]) * 256)
		+ (ord($buffer[$position + 3]) * 65536)
		+ (ord($buffer[$position + 4]) * 16777216);
		if ($player[$player_number]['score'] > 2147483648) $player[$player_number]['score'] -= 4294967296;
		$time = substr($buffer, $position + 5, 4);               
		if (strlen($time) < 4) return FALSE;              
		   list(,$time) = unpack("f", $time);                
		    $time = mktime(0, 0, $time);                          
		    $player[$player_number]['time'] = date("H:i:s", $time);  
		    $position += 9;
		    }
		    while ($position < strlen($buffer));                   
		    return $player;
		    }

		    if ($request == "settings") {
			$tmp     = substr($buffer, 2); 
			$rawdata = explode("\x00", $tmp);
		  for($i=1; $i<count($rawdata); $i=$i+2) {
		  $rawdata[$i] = strtolower($rawdata[$i]);  
		  $setting[$rawdata[$i]] = $rawdata[$i+1];  
		  }
		    return $setting; 
		   }
 }

?>
На локалке работает нормально, а вот на хостинге вылазит ошибка:

Код:
Notice: fwrite() [function.fwrite]: send of 25 bytes failed with errno=1 Operation not permitted in /home/123.php on line 44
В чем проблема?

Спрашивал у хостера он говорит что у него всё включено....

Последний раз редактировалось spamoney; 07.02.2009 в 10:14..
 
Ответить с цитированием