Вывод Онлайна

Константинус

Сообщения
2
Симпатии
0
Онлайн
7ч 47м
#1
Приветствую , нужна помощь

Дело в том что не меняет статус сервера с offline на Online
Сервер Online

онлайн игроков выводит правельно

помогите уже всю голову сломал не могу понять в чом дело

Код:
<?php

//include "config.php"; // подключаем файл с настройками подключения
class online {

    private $config;
    private $delay;
    private $filename;
    private $maxonline;
    private $online;

    public function __construct() {
        // Данные для соединения с базой сервера
        $this->config['host'] = '---';
        $this->config['user'] = '___';
        $this->config['password'] = '____';
        $this->config['db'] = '___';
        //-Настройки отображаения статус сервера-//
     
        $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);
        $status = ($fp >= 1) ? 'On-line': 'Off-line'; //запрос ответа от гейм сервера
     
        $fp = @fsockopen($servergame, $portlogin, $errno, $errstr, 1);
        if($fp >= 1)
        {
            $loginonline = 'On-line';
        }
        else
        {
            $loginonline = 'Off-line';
        }



        return $abstractWidget->renderer('server_widget', [
            // Здесь нужно указать параметры, которые нужно отображать в виджете
            'online_2' => $online->get_online(), //Выводит  Онлайн
            'status_2' => $loginonline, //логин сервер
            'status_1' => $status //гейм сервер
        ]);
    }
}
пробывал по разному толку 0
Код:
  $fp = @fsockopen($servergame, $portgame, $errno, $errstr, 1);
        $status = ($fp >= 1) ? 'On-line': 'Off-line'; //запрос ответа от гейм сервера
    
        $fp = @fsockopen($servergame, $portlogin, $errno, $errstr, 1);
        if($fp >= 1)
        {
            $loginonline = 'On-line';
        }
        else
        {
            $loginonline = 'Off-line';
        }