OverOne1 0 Опубликовано 11 июля, 2015 Как определить онлайн на сервере? Использую $query = mysql_fetch_assoc(mysql_query('SELECT `online` FROM `characters`')); echo 'Онлайн: '.$query['online'].''; не работает. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
mwmkr 268 Опубликовано 11 июля, 2015 "SELECT COUNT(*) FROM `characters` WHERE `online`>0", Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
OverOne1 0 Опубликовано 11 июля, 2015 "SELECT COUNT(*) FROM `characters` WHERE `online`>0", Не помогло(( Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 11 июля, 2015 (изменено) вобще-то есть пакет специальный, котроый можно считать с порта геймсерва и в нем будет вся инфа о текущем онлайне. пример функции на php для получения инфы } // // Проверка статуса серверов и т.п. // function get_status($ip, $port, &$info, $status_refresh_time = 5) { global $data_dir; $info = array(); $data_file = "scripts/cache/{$ip}-{$port}.status"; if (!file_exists($data_file)) { $fh = fopen($data_file, "w+"); if ($port > 7000) { fputs($fh, "time:online:world:max:current:playing:store:unk0:unk1:unk2:unk3:unk4:unk5:unk6:unk7:unk8:unk9:unk10:unk11\n"); fputs($fh, "0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0\n"); } else { fputs($fh, "time:online\n"); fputs($fh, "0:0\n"); } fclose($fh); } $fh = fopen($data_file, "r"); $str = trim(fgets($fh)); $keys = explode(":", $str); $str = trim(fgets($fh)); $values= explode(":", $str); fclose($fh); $info = array_combine($keys, $values); unset($keys, $values); if (($info["time"] + $status_refresh_time) < time()) { if ($fp = @fsockopen($ip, $port, $ERROR_NO, $ERROR_STR, (float) 0.5)) { if ($port > 7000) { $packet = pack("vCi", 6, 0, -3); fwrite($fp, $packet); $returned = fread($fp, 73); $info = unpack("vtime/Conline/iworld/imax/icurrent/iplaying/istore/iunk0/iunk1/iunk2/iunk3/iunk4/iunk5/iunk6/iunk7/iunk8/iunk9/iunk10/iunk11", $returned); } fclose($fp); $info["online"] = 1; } else { $info["online"] = 0; $info["current"] = 0; $info["store"] = 0; } $info["time"] = time(); $fh = fopen($data_file, "w+"); fputs($fh, implode(":", array_keys($info))."\n"); fputs($fh, implode(":", array_values($info))."\n"); fclose($fh); } return $info["online"]; } Изменено 11 июля, 2015 пользователем Gaikotsu 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Desquire 451 Опубликовано 11 июля, 2015 Без пакетов, с бд. $conn = new mysqli($config['host'], $config['user'], $config['password'], $config['db']); $query = "SELECT count(0) FROM `characters` WHERE `online`!=0"; $result = $conn->query($query); if (!$result) { echo "Error"; } $rows = $result->fetch_assoc(); echo $rows['count(0)']; Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
FreshKekes 95 Опубликовано 11 июля, 2015 в админке посчитать в разделе game/list Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 11 июля, 2015 ты еще скажи вручную про всем локациям побегать и народ посчитать 3 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
6al3t 2 Опубликовано 11 июля, 2015 Не помогло(( "SELECT COUNT(*) FROM `characters` WHERE `online`>0" как это не помогло ? это что за чудо сборка у тебя ?) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
pww 8 Опубликовано 12 июля, 2015 потому что, скорее всего он скопировал запрос в том виде, который ему скинули - "SELECT COUNT(*) FROM `characters` WHERE `online`>0", вот так пробуй - SELECT COUNT(*) FROM `characters` WHERE `online`>0; Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Desquire 451 Опубликовано 12 июля, 2015 (изменено) потому что, скорее всего он скопировал запрос в том виде, который ему скинули - "SELECT COUNT(*) FROM `characters` WHERE `online`>0", вот так пробуй - SELECT COUNT(*) FROM `characters` WHERE `online`>0; В запросах не нужно ставь точку с запятой в конце ( в пхп). Скорей всего он не поправил строку echo 'Онлайн: '.$query['online'].''; Нужно было echo 'Онлайн: '.$query['count(0)'].''; Изменено 12 июля, 2015 пользователем zGrandy Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
(D)uality 700 Опубликовано 12 июля, 2015 в админке посчитать в разделе game/list Есть куда проще способ - зайти в раздел game/shutdown, и там пишет какой онлайн на данный момент. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты