|
Архив - только для чтения |
| Модератор форума: andycrowz |
| Форум Корзина форума Корзина статус сервера (web) |
| статус сервера |
Прошу помощи, подскажите как сделать, что бы скрипт показывал 0 человек в сети если сервер выключен. Сейчас он показывает сколько было в сети на момент выключения сервера хД.
Код <?php $characters = mysql_connect("$host:$port", "$login", "$pass", True); mysql_selectdb("$dbc", $characters); $sql = mysql_query("SELECT count(`guid`) FROM `characters` WHERE `online` = 1;", $characters); $online = "".mysql_result($sql, 0, 0).""; $allianceonline = mysql_query ("select count(*) from characters where online = 1 and race in (1,3,4,7,11)"); $allianceonline = mysql_result ($allianceonline,0); $hordeonline = mysql_query ("select count(*) from characters where online = 1 and race in (2,5,6,8,10)"); $hordeonline = mysql_result ($hordeonline,0); $fp = @fsockopen("$host", $gameport, $errno, $errstr, 1); if($fp >= 1){ $gamen = 'ONLINE'; } else { $gamen = 'OFFLINE'; } mysql_selectdb ("$rdb"); $we = mysql_query ("select count(*) from account"); $we = mysql_result ($we,0); ?> P.S не знаю куда написать. если что не ругайтесь.
Сообщение # 1 написано 18.01.2014 в 09:42
|
Ужасно старый и кривой скрипт, вообще никакой оптимизации, будет ддос - этот скрипт будет нагружать и веб часть и сам сервер своими постоянно открытыми сокетами.
Если по вопросу: Код <?php $characters = mysql_connect("$host:$port", "$login", "$pass", True); // драйвер mysql морально устарел, юзай mysqli или pdo mysql_selectdb("$dbc", $characters); $sql = mysql_query("SELECT count(`guid`) FROM `characters` WHERE `online` = 1;", $characters); $online = "".mysql_result($sql, 0, 0).""; $allianceonline = mysql_query ("select count(*) from characters where online = 1 and race in (1,3,4,7,11)"); $allianceonline = mysql_result ($allianceonline,0); $hordeonline = $online - $allianceonline; // был еще один лишний запрос в базу $fp = @fsockopen("$host", $gameport, $errno, $errstr, 1); // вообще дикая строка, никогда такое не делай на продакшене if($fp >= 1){ $gamen = 'ONLINE'; } else { $gamen = 'OFFLINE'; $online = 0; $allianceonline = 0; $hordeonline = 0; } mysql_selectdb ("$rdb"); $we = mysql_query ("select count(*) from account"); $we = mysql_result ($we,0); ?> Вообще, по оптимизации отправляйся ко мне в пм. |
ап, актуально
Добавлено (19.01.2014, 07:52) --------------------------------------------- есть скрипт поменьше Немного пытался допилить так и не вышло Код <? $link = mysqli_connect("$host", "$login", "$pass") or die("Could not connect: " . mysqli_error($link)); mysqli_select_db($link, "$dbc") or die('Выбрана неверная база данных'); if (mysqli_query($link, "SET NAMES $database_encoding") === TRUE); $resnumall_characters = mysqli_query($link, "SELECT * FROM characters WHERE online=1 "); echo mysqli_num_rows($resnumall_characters); while($row_cnt = (mysqli_fetch_array($resnumall_characters))); ?> он тоже не сбрасывает на 0 если сервер выключить и там будут игроки. хелп Добавлено (19.01.2014, 14:56) |
Код <?php $characters = mysql_connect("$host:$port", "$login", "$pass", True); $fp = @fsockopen("$host", $gameport, $errno, $errstr, 1); if($fp >= 1){ $gamen = 'ONLINE'; mysql_selectdb("$dbc", $characters); $sql = mysql_query("SELECT count(`guid`) FROM `characters` WHERE `online` = 1;", $characters); $online = "".mysql_result($sql, 0, 0).""; $allianceonline = mysql_query ("select count(*) from characters where online = 1 and race in (1,3,4,7,11)"); $allianceonline = mysql_result ($allianceonline,0); $hordeonline = mysql_query ("select count(*) from characters where online = 1 and race in (2,5,6,8,10)"); $hordeonline = mysql_result ($hordeonline,0); } else { $gamen = 'OFFLINE'; $online = $allianceonline = $hordeonline = 0; } mysql_selectdb ("$rdb"); $we = mysql_query ("select count(*) from account"); $we = mysql_result ($we,0); ?> |
Ну, вообще, второй скрипт, похоже, более фиговый, чем первый. И я там не увидел проверки на доступность сервера. Только количество онлайн.
Собстно это и есть получение онлайн игроков. Только там оно выводит его, а не присваивает переменной. Что за фигня происходит тут - известно только автору данного скрипта. До меня так и не дошло, в чем же смысл получать данные, но не использовать. |
Так как сделать правильно? я вообще не соображаю
Скрипт этот брал из рипа ScreeaM как-то так его ник) Добавлено (23.01.2014, 11:41) --------------------------------------------- Мне вобщем нужен просто скрипт который по человечески выводил общее кол-во человек в онлайне, и что- бы показывал 0 если сервер будет оффлайн. Добавлено (23.01.2014, 12:00) --------------------------------------------- Не знаю правильно ли, но работает Код <? $link = mysqli_connect("$host", "$login", "$pass") or die("Could not connect: " . mysqli_error($link)); mysqli_select_db($link, "$dbc") or die('Выбрана неверная база данных'); if (mysqli_query($link, "SET NAMES $database_encoding") === TRUE); $fp = @fsockopen("$host", $gameport, $errno, $errstr, 1); if($fp >= 1){ $resnumall_characters = mysqli_query($link, "SELECT `online` FROM `characters` WHERE `online`='1'"); echo mysqli_num_rows($resnumall_characters); } else { echo($resnumall_characters = 0); } mysqli_close($link); ?> |
Ну, в таком случае лучше так:
Код <? $fp = @fsockopen("$host", $gameport, $errno, $errstr, 1); if($fp >= 1){ $link = mysqli_connect("$host", "$login", "$pass") or die("Could not connect: " . mysqli_error($link)); mysqli_select_db($link, "$dbc") or die('Выбрана неверная база данных'); $q = mysqli_query($link, "SELECT COUNT(*) FROM `characters` WHERE `online`='1'"); echo ($q === FALSE ? mysqli_error($link) : mysqli_fetch_row($q)[0]); } else { echo "0"; } mysqli_close($link); ?>
Сообщение # 8 написано 23.01.2014 в 12:56
|
Старая версия php или что-то с конфигурацией. У меня такое было, когда я перенес сайт на хостинг.
Тогда так: Код <? $fp = @fsockopen("$host", $gameport, $errno, $errstr, 1); if($fp >= 1){ $link = mysqli_connect("$host", "$login", "$pass") or die("Could not connect: " . mysqli_error($link)); mysqli_select_db($link, "$dbc") or die('Выбрана неверная база данных'); $q = mysqli_query($link, "SELECT COUNT(*) FROM `characters` WHERE `online`='1'"); if($q === FALSE) echo mysqli_error($link); else { $r = mysqli_fetch_row($q); echo $r[0]; } } else { echo "0"; } mysqli_close($link); ?> |
Данная тема была перемещена из раздела [TrinityCore] Help.
Причина перемещения: Причина не указана Переместил: Dimitro.
Arcanum Core © Dev.
Для запросов на выдачу наград/снятие замечаний есть темы в Работе Портала. Не пишите по этому поводу в личку.
Сообщение # 14 написано 23.01.2014 в 14:36
|
| |||
| |||
не поможете ?
