Назад

Отображение онлайна...

Автор: xDREDDx: Дата: 12.30.2010

Сегодня столкнулся с проблемой, отображения онлайна...
В SQL есть таблица sstatus, по плану в неё должен записываться текущий онлайн на сервере. В новой ревизии в файле char_athena.conf, нет настройки online_check (как было раньше). Может есть другой способ проверки онлайна?
Очень нужна помощь....^_^

Автор: xDREDDx: Дата: 12.30.2010

Спасибо, значит в новых ревизиях перенесли статус....
И ещё один вопрос, как бы правильно отредактировать php скрипт с этим SQL запросом...

$query = "SELECT user FROM $CONFIG_sql_dbname.sstatus ORDER by user asc limit 0,1";
$sql->result = $sql->execute_query($query,'header_bar.php',0);$sql->total_query++;
$row = $sql->fetch_row();
$total_online = $row["user"];

if (empty($total_online)) {
$total_online = '0';


В Php не сильно разбираюсь....

Автор: unded: Дата: 12.30.2010



$query = "SELECT count(*) as user FROM {$CONFIG_sql_dbname}.char WHERE `online`='1' ";
$sql->result = $sql->execute_query($query,'header_bar.php',0);
$sql->total_query++;
$row = $sql->fetch_row();
$total_online = $row["user"];

if (empty($total_online)) {
$total_online = '0';



Пробуй.

Автор: Cole McCormick: Дата: 12.30.2010

Видишь, без рус-еа долго протянуть невозможно, всеравно тянет назад. С наступающим тебя!

Автор: unded: Дата: 12.30.2010

Когда время есть, и делать нечего, просто захожу читаю темы =)

И тебя тоже с наступающим новым годом!

Автор: xDREDDx: Дата: 12.31.2010

По началу путало с онлайном на сайте, теперь заработало)
Спасибо) Очень помогли! Вас тоже с наступающим!))

Автор: Asuma: Дата: 12.31.2010

Цитата unded;28559:


$query = "SELECT count(*) as user FROM {$CONFIG_sql_dbname}.char WHERE `online`='1' ";
$sql->result = $sql->execute_query($query,'header_bar.php',0);
$sql->total_query++;
$row = $sql->fetch_row();
$total_online = $row["user"];

if (empty($total_online)) {
$total_online = '0';



Пробуй.


Не грамотно, зачем считать кол-во(причем всего), в конце вам придется еще обрабатывать этот запрос, что вы и делаете, я лишь получаю кол-во строк.

Автор: unded: Дата: 12.31.2010

Asuma ты не прав. Хоть ты напишешь count(*) или count(user) запрос будет обрабатываться ~0.03 - 0.04 сек. И запрос count(*) выполнится быстрее чем count(user) или count(0). И строки ты здесь не как не получишь так как вернется только одно значение user (псевдоним count(*)), а точнее количество найденных вхождений удовлетворяющее запросу.

Автор: Asuma: Дата: 01.01.2011

Цитата unded;28580:
Asuma ты не прав. Хоть ты напишешь count(*) или count(user) запрос будет обрабатываться ~0.03 - 0.04 сек. И запрос count(*) выполнится быстрее чем count(user) или count(0). И строки ты здесь не как не получишь так как вернется только одно значение user (псевдоним count(*)), а точнее количество найденных вхождений удовлетворяющее запросу.


Ты на пустую БД проверяешь?

Я ничего доказывать не буду, но мой совет: иди кури мануалы по MySQL :)
Если пользоваться моим классом, то весь код будет выглядить вот так:

$mysql->prepare('SELECT id FROM `char` WHERE online=:status');
$mysql->execute(array(':status' => 1));
print 'Кол-во игроков в сети:'.$mysql->num();


P.S. У меня все это выполняется за 0,0006sec.

Автор: Cole McCormick: Дата: 01.01.2011

Цитата Asuma;28662:
Ты на пустую БД проверяешь?

Я ничего доказывать не буду, но мой совет: иди кури мануалы по MySQL :)
Если пользоваться моим классом, то весь код будет выглядить вот так:

$mysql->prepare('SELECT id FROM `char` WHERE online=:status');
$mysql->execute(array(':status' => 1));
print 'Кол-во игроков в сети:'.$mysql->num();


P.S. У меня все это выполняется за 0,0006sec.


Ахахахах, жжешь. Ты просто не знаешь, кто такой unded. По этой части, он спец.

Автор: Asuma: Дата: 01.01.2011

а, ок

Автор: unded: Дата: 01.01.2011

Да нет, база не пустая, там около 400 тыс. записей.
Можно использовать count() как альтернативу mysql_num_rows().

Но быстрее count(), т.к при запросе "SELECT id FROM `char` WHERE online=:status" Ты тупо получаешь поля по условию запроса, и потом отдаешь этот результат в php функцию (mysql_num_rows()) которая считает эти поля и возвращает количество, а так как язык php обрабатывается построчно, то есть с верху вниз, то это займет некоторое время, а при использовании Sql функции count() эти поля считаются еще на сервере MySql, и возвращает готовый результат, а точнее количество строк удовлетворяющие запросу Sql. По этому лучше использовать запрос с count().

p.c покажи свой класс.
p.c.c это тебе мануал читать нужно а не мне.

Автор: Asuma: Дата: 01.01.2011

Цитата unded;28681:
Да нет, база не пустая, там около 400 тыс. записей.
Можно использовать count() как альтернативу mysql_num_rows().

Но быстрее count(), т.к при запросе "SELECT id FROM `char` WHERE online=:status" Ты тупо получаешь поля по условию запроса, и потом отдаешь этот результат в php функцию (mysql_num_rows()) которая считает эти поля и возвращает количество, а так как язык php обрабатывается построчно, то есть с верху вниз, то это займет некоторое время, а при использовании Sql функции count() эти поля считаются еще на сервере MySql, и возвращает готовый результат, а точнее количество строк удовлетворяющие запросу Sql. По этому лучше использовать запрос с count().

p.c покажи свой класс.
p.c.c это тебе мануал читать нужно а не мне.


Спасибо, посмеялся.
UPD: Мне вот интересно, ты вообще сам понимаешь что пишешь?
UPD2: + не нужна проверка empty.
UPD3: На вкус и цвет, товарищей нет.
UPD4: Девочка-скинхед, бритай под ноль, скажешь ей привет - в ответ услышишь ОЙ!
UPD5: Жду Aurizero CP!

/**
* @author Asuma
* @license http://www.gnu.org/licenses/gpl.html GNU GPL 3.0
**/
class mysql extends PDO
{
public $count = 0;
private $statement = null, $host = 'localhost', $port = '3306', $user = 'root', $pass = '', $base = '', $charset = '';

public function __construct($host = 'localhost', $port = '3306', $user = 'root', $pass = '', $base = '', $charset = 'utf8')
{
$this->host = $host;
$this->port = $port;
$this->user = $user;
$this->pass = $pass;
$this->base = $base;
$this->charset = $charset;
return;
}

public function prepare($query)
{
if($this->count == 0)
{
parent::__construct('mysql:host='.$this->host.';port='.$this->port.';dbname='.$this->base, $this->user, $this->pass);
$this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}

$this->statement = parent::prepare($query);
return;
}

public function execute($vars = null)
{
if($this->count++ == 0)
{
$this->query('SET NAMES '.$this->charset);
}

$this->statement->execute($vars);
return;
}

public function num()
{
if(isset($this->statement) && !empty($this->statement))
{
return $this->statement->rowCount();
}

return false;
}

public function fetch()
{
if(isset($this->statement) && !empty($this->statement))
{
return $this->statement->fetch();
}

return false;
}
}

Автор: unded: Дата: 01.01.2011

Я вижу ты не пробиваемый человек.
Я знаю что такое PDO, и активно им пользуюсь.
Я тебе говорю совсем другое, PDO это просто класс реализованный как расширение php.
А я тебе объясняю логику работы этих функций, и преимущества их в той или иной степени.
В принципе в этом классе твоего не чего нет, ты просто инкапсулировал класс PDO.

А в этой теме, человек просил сделать запрос на основе его кода, а не твоего псевдо класса.

Автор: unded: Дата: 01.01.2011

UPD: Мне вот интересно, ты вообще сам понимаешь что пишешь?
UPD2: + не нужна проверка empty.
UPD3: На вкус и цвет, товарищей нет.
UPD4: Девочка-скинхед, бритай под ноль, скажешь ей привет - в ответ услышишь ОЙ!
UPD5: Жду Aurizero CP!


Понимаю, профессия обязывает.

Автор: Asuma: Дата: 01.01.2011

Цитата unded;28687:
Я вижу ты не пробиваемый человек.
Я знаю что такое PDO, и активно им пользуюсь.
Я тебе говорю совсем другое, PDO это просто класс реализованный как расширение php.
А я тебе объясняю логику работы этих функций, и преимущества их в той или иной степени.
В принципе в этом классе твоего не чего нет, ты просто инкапсулировал класс PDO.

А в этой теме, человек просил сделать запрос на основе его кода, а не твоего псевдо класса.


Это провал. Я посмотрел твою Auzeiro CP. Говорить мне с тобой не о чем. Забей на программирование.
UPD: Даже моя eeRO лучше, которую я писал когда только изучал PHP.

Автор: unded: Дата: 01.01.2011

АА ты самоучка. Ну тогда кому я объясняю что такое логика программирования,
Я понимаю ты посидел в интернете почитал мануалы книжки, и теперь считаешь себя богом.
Я ее очень давно писал, с тех времен много изменилось.

Автор: unded: Дата: 01.01.2011

А судя по тому как ты отвечаешь, и переходишь на ненормативную лексику, и по этим понтам "я вызываю тебя на поединок! Кто быстрее напишет код выводящий "я крутой программист" Я выйграл!" то тебе от силы лет 15 - 17.

А за оскорбление администрации форума и нарушения правила III.3 я тебя легко в рид-онли отправить могу.

Автор: Asuma: Дата: 01.01.2011

Цитата unded;28694:
А судя по тому как ты отвечаешь, и переходишь на ненормативную лексику, и по этим понтам "я вызываю тебя на поединок! Кто быстрее напишет код выводящий "я крутой программист" Я выйграл!" то тебе от силы лет 15 - 17.

А за оскорбление администрации форума и нарушения правила III.3 я тебя легко в рид-онли отправить могу.

Ты мне надоел. :(

Автор: DiS[IP]: Дата: 01.01.2011

[FONT=Lucida Console]Создайте во флуде тему с холиваром,тут вы занимаетесь сплошной хунтой.Да и тема вообще автором создана не в том разделе.Влезать в ваши споры не буду,но ИМХО undead в этой сфере более опытный и спорить с ним бесполезно.А сталин все верно сказал про eeRO.
Тему закрываю.Хотите посраться-создавайте тему во флуде.[/FONT]