Приветствую , нужна срочно помощь не могу понять что не так
Не работает код!?
Вообщем не подключается или не выводит информацию о статусе сервера
с off-line на on-line сервер включен все прекрастно а он мне выводит что оффлайн при этом онлайн игроков отображается коректно
Не работает код!?
Вообщем не подключается или не выводит информацию о статусе сервера
с off-line на on-line сервер включен все прекрастно а он мне выводит что оффлайн при этом онлайн игроков отображается коректно
Код:
<?php
//include "config.php"; // подключаем файл с настройками подключения
class online {
private $config;
private $delay;
private $filename;
private $maxonline;
private $online;
public function __construct() {
// Данные для соединения с базой сервера
$this->config['host'] = 'localhost';
$this->config['user'] = 'root';
$this->config['password'] = '12344321';
$this->config['db'] = 'xf_forum';
//-Настройки отображаения статус сервера-//
$serverlogin="localhost"; // IP сервера
$servergame="localhost"; // IP сервера
$portgame="7777"; // Порт игрового сервера [7777]
$portlogin="2106"; // Порт логин сервера [2106]
//Настройки
$this->filename = 'cache.txt'; //имя файла, В нем будет хранится реальный онлайн
$this->delay = 120; // Время обновления онлайна из базы . например для обновления раз в 5 минут необходимо установить значение 300
}
public function get_online()
{
$this->new_online();
$online = ($this->online);
return round($online);
}
private function new_online() {
$last_update = time() - filemtime($this->filename);
if ($last_update > $this->delay) {
$this->online = $this->refresh_online();
$fp = fopen($this->filename, 'w');
fwrite($fp, $this->online);
fclose($fp);
return true;
} else {
$fp = fopen($this->filename, "r");
if ($fp) {
$this->online = fgets($fp, 999);
}
fclose($fp);
return true;
}
}
private function refresh_online() {
$conn = new mysqli($this->config['host'], $this->config['user'], $this->config['password'], $this->config['db']);
$query = "SELECT count(0) FROM `characters` WHERE `online`!=0";
$result = $conn->query($query);
if (!$result) {
return false;
}
$rows = $result->fetch_assoc();
$conn->close();
$result->free();
return $rows['count(0)'];
}
}
class status_bar {
public static function renderWidget(\XF\Widget\AbstractWidget $abstractWidget)
{
$online = new online; // Создает переменную Онлайна
$fp = @fsockopen($servergame, $portgame, $errno, $errstr, 1);
$fp = @fsockopen($serverlogin, $portlogin, $errno, $errstr, 1);
$game = ($fp >= 1) ? 'On-line': 'Off-line'; //запрос ответа от гейм сервера
$login = ($fp >= 1) ? 'On-line': 'Off-line'; //запрос ответа от гейм сервера
return $abstractWidget->renderer('server_widget', [
// Здесь нужно указать параметры, которые нужно отображать в виджете
'online_2' => $online->get_online(), //Выводит Онлайн
'status_2' => $login, //логин сервер
'status_1' => $game //гейм сервер
]);
}
}