Код
function ReadServers($servlist) {
$file = @fopen($servlist,"r");
if ($file) {
$lines = explode("\n", fread($file, filesize($servlist)));
foreach ($lines as $v) {
$elem = explode(":",$v);
$srv['ip'] = $elem[0];
$srv['port'] = $elem[1];
if (GetServerInfo($srv['ip'],$srv['port']))
$servers[] = $srv;
}
fclose($file);
return $servers;
} else return false;
}
$servers = array();
$servers = ReadServers(SERVLIST);
$file = @fopen($servlist,"r");
if ($file) {
$lines = explode("\n", fread($file, filesize($servlist)));
foreach ($lines as $v) {
$elem = explode(":",$v);
$srv['ip'] = $elem[0];
$srv['port'] = $elem[1];
if (GetServerInfo($srv['ip'],$srv['port']))
$servers[] = $srv;
}
fclose($file);
return $servers;
} else return false;
}
$servers = array();
$servers = ReadServers(SERVLIST);
Как ее заменить на чтение из БД?
В бд
| id | ip | port |
Спустя 3 часа, 49 минут, 53 секунды (10.06.2008 - 08:38) n1tr0k1ll3r написал(а):
Цитата(uMnepaTop @ 10.6.2008, 5:48) [snapback]40367[/snapback]
Есть функция:
Как ее заменить на чтение из БД?
В бд
| id | ip | port |
Код
function ReadServers($servlist) {
$file = @fopen($servlist,"r");
if ($file) {
$lines = explode("\n", fread($file, filesize($servlist)));
foreach ($lines as $v) {
$elem = explode(":",$v);
$srv['ip'] = $elem[0];
$srv['port'] = $elem[1];
if (GetServerInfo($srv['ip'],$srv['port']))
$servers[] = $srv;
}
fclose($file);
return $servers;
} else return false;
}
$servers = array();
$servers = ReadServers(SERVLIST);
$file = @fopen($servlist,"r");
if ($file) {
$lines = explode("\n", fread($file, filesize($servlist)));
foreach ($lines as $v) {
$elem = explode(":",$v);
$srv['ip'] = $elem[0];
$srv['port'] = $elem[1];
if (GetServerInfo($srv['ip'],$srv['port']))
$servers[] = $srv;
}
fclose($file);
return $servers;
} else return false;
}
$servers = array();
$servers = ReadServers(SERVLIST);
Как ее заменить на чтение из БД?
В бд
| id | ip | port |
Код
function ReadServersFromDB()
{
$q = "SELECT `id`,`ip`,`port` FROM имя_таблицы";
$db = mysql_connect($db_host, $db_user, $db_pass);
mysql_select_db($db_name, $db);
$result = mysql_query($q, $db);
$num_rows = mysql_num_rows($result);
for($i = 0; $i < $num_rows; $i++)
{
$row = mysql_fetch_assoc($result);
$servers[$i] = $row;
}
return $servers;
}
{
$q = "SELECT `id`,`ip`,`port` FROM имя_таблицы";
$db = mysql_connect($db_host, $db_user, $db_pass);
mysql_select_db($db_name, $db);
$result = mysql_query($q, $db);
$num_rows = mysql_num_rows($result);
for($i = 0; $i < $num_rows; $i++)
{
$row = mysql_fetch_assoc($result);
$servers[$i] = $row;
}
return $servers;
}
Ну и проверки по вкусу

Спустя 1 час, 2 минуты, 12 секунд (10.06.2008 - 09:40) uMnepaTop написал(а):
Оо, спасиииибо! Сейчас попробую)
Спустя 1 час, 37 минут (10.06.2008 - 11:17) uMnepaTop написал(а):
Код
function GetServerInfo($ip,$port) {
$fp = @fsockopen("udp://".$ip, $port);
if (!$fp) return false;
@fwrite($fp,"\xFF\xFF\xFF\xFFTSource Engine Query\x00".chr(10));
$start=time();
socket_set_timeout($fp,1);
$st=fread($fp,1);
$r=socket_get_status($fp);
$r=$r["unread_bytes"];
if ($r == 0) { @fclose($fp); return false;}
$st.=fread($fp,$r);
@fclose($fp);
$st=substr($st,5);
$address=SubStr($st,0,StrPos($st,chr(0)));
$address=str_replace(chr(0),"|",$address);
$st=SubStr($st,StrPos($st,chr(0))+1);
$name=SubStr($st,0,StrPos($st,chr(0)));
$st=SubStr($st,StrPos($st,chr(0))+1);
$map=SubStr($st,0,StrPos($st,chr(0)));
$st=SubStr($st,StrPos($st,chr(0))+1);
$st=SubStr($st,StrPos($st,chr(0))+1);
$st=SubStr($st,StrPos($st,chr(0))+1);
$current=ord(SubStr($st,0,1));
$max=ord(SubStr($st,1,1));
if ($map == "") return false;
$result['map'] = $map;
$result['name']= $name;
$result['current'] = $current;
$result['max'] = $max;
return $result;
}
function ReadServersFromDB()
{
$num_rows = mysql_num_rows($result);
for($i = 0; $i < $num_rows; $i++)
{
$row = mysql_fetch_assoc($result);
$servers[$i] = $row;
}
return $servers;
}
while ($row = mysql_fetch_array($result)) {
$id = $row['id'];
$ip = $row['ip'];
$port = $row['port'];
$fp = @fsockopen("udp://".$ip, $port);
if (!$fp) return false;
@fwrite($fp,"\xFF\xFF\xFF\xFFTSource Engine Query\x00".chr(10));
$start=time();
socket_set_timeout($fp,1);
$st=fread($fp,1);
$r=socket_get_status($fp);
$r=$r["unread_bytes"];
if ($r == 0) { @fclose($fp); return false;}
$st.=fread($fp,$r);
@fclose($fp);
$st=substr($st,5);
$address=SubStr($st,0,StrPos($st,chr(0)));
$address=str_replace(chr(0),"|",$address);
$st=SubStr($st,StrPos($st,chr(0))+1);
$name=SubStr($st,0,StrPos($st,chr(0)));
$st=SubStr($st,StrPos($st,chr(0))+1);
$map=SubStr($st,0,StrPos($st,chr(0)));
$st=SubStr($st,StrPos($st,chr(0))+1);
$st=SubStr($st,StrPos($st,chr(0))+1);
$st=SubStr($st,StrPos($st,chr(0))+1);
$current=ord(SubStr($st,0,1));
$max=ord(SubStr($st,1,1));
if ($map == "") return false;
$result['map'] = $map;
$result['name']= $name;
$result['current'] = $current;
$result['max'] = $max;
return $result;
}
function ReadServersFromDB()
{
$num_rows = mysql_num_rows($result);
for($i = 0; $i < $num_rows; $i++)
{
$row = mysql_fetch_assoc($result);
$servers[$i] = $row;
}
return $servers;
}
while ($row = mysql_fetch_array($result)) {
$id = $row['id'];
$ip = $row['ip'];
$port = $row['port'];
По этим $IP:$PORT должно подставляться в первую функцию и показывать есче $name $map $current/$max
Но не показует *(
Спустя 23 минуты, 9 секунд (10.06.2008 - 11:41) n1tr0k1ll3r написал(а):
Цитата(uMnepaTop @ 10.6.2008, 12:17) [snapback]40393[/snapback]
По этим $IP:$PORT должно подставляться в первую функцию и показывать есче $name $map $current/$max
Но не показует *(
Но не показует *(
Для чего нужно:
Код
while ($row = mysql_fetch_array($result)) {
$id = $row['id'];
$ip = $row['ip'];
$port = $row['port'];
$id = $row['id'];
$ip = $row['ip'];
$port = $row['port'];
???
И где вызовы этих функций?
Спустя 1 минута, 26 секунд (10.06.2008 - 11:42) uMnepaTop написал(а):
while нужен, чтобы читало все строки из бд)
Спустя 11 минут, 6 секунд (10.06.2008 - 11:53) n1tr0k1ll3r написал(а):
Цитата(uMnepaTop @ 10.6.2008, 12:42) [snapback]40395[/snapback]
while нужен, чтобы читало все строки из бд)
Может ты тогда в курсе для чего мой код:
Код
for($i = 0; $i < $num_rows; $i++)
{
$row = mysql_fetch_assoc($result);
$servers[$i] = $row;
}
{
$row = mysql_fetch_assoc($result);
$servers[$i] = $row;
}
?
Спустя 3 часа, 9 минут, 41 секунда (10.06.2008 - 15:03) uMnepaTop написал(а):
Проблема решена.