Цитата:
Сообщение от PROGRAMMATOR
Какой движок на сайте установлен? Хотя без разницы.
Вот вам модуль для нашего Aion-Top (вывод онлайна), просто измените запрос SELECT ... и установите SHARING = true
PHP код:
<?php
/*
* Модуль вывода игроков в онлайне
* Автор модуля PROGRAMMATOR
* (c) 2010 www.aion-top.info
*/
// общий доступ к файлу online.txt
define('SHARING', false);
if (preg_match('/AionTopBot/', $_SERVER['HTTP_USER_AGENT']) or SHARING)
{
#################################
# Настройка подключения к MySQL #
#################################
$db = array (
'host' => 'localhost', // хост
'port' => '3306', // порт
'user' => 'root', // пользователь
'pass' => 'пароль', // пароль
'name' => 'aion' // база данных
);
#################################
# Ниже ничего не редактировать! #
#################################
// подключаемся к MySQL
mysql_connect($db['host'].':'.$db['port'], $db['user'], $db['pass']) or die();
// выбираем базу данных
mysql_select_db($db['name']);
// делаем выборку
$sql = mysql_query('SELECT * FROM players WHERE online=1');
// выводим количество
echo (mysql_num_rows($sql));
// освобождаем ресурсы
mysql_free_result($sql);
}
else
{
header('HTTP/1.0 404 Not Found');
}
?>
|
Могу оспорить твой код, т.к. в большенстве случаев сайт находиться на отдельном хосте от гейм сервера и используеться внешний коннект (как известно он намного медленей локального) есть необходимость сохранять результат онлайна и время в отдельный файл (лучше в 1) и сделать время сохранения в 1 минуту, далее тут нету mysql_close();
предлогаю такой вариант:
PHP код:
Function connect_to_Game()
{
define("MYSQLHOST", "хост");
define("DBUSER", "пользователь");
define("DBPASS", "пароль");
define("DBNAME", "база");
$game = mysql_connect (MYSQLHOST, DBUSER, DBPASS);
mysql_select_db (DBNAME);
}
$count = File("online.txt");
IF(!$count[0]) $count[0] = 0;
IF(!$count[1]) $count[1] = 0;
IF(($count[0]+60) <= time())
{
connect_to_Game();
$online = mysql_result(mysql_query("SELECT COUNT(*) FROM `players` WHERE `online` = 1"),0);
file_put_contents('online.txt', Time()."\n".$online);
mysql_close($game);
}
ELSE
{
$online = $count[1];
}
Только набросал мб ошибся где.