1. Гость, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!

[PHP-MYSQL]Логирование он-лайна(+посещаемость ГМ) v1

Тема в разделе 'PW Разработки', создана пользователем k0nst, 24 дек 2012.

  1. TopicStarter Overlay

    k0nst Пользователи

    Сообщения:
    26
    Лайки:
    4
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    <script>alert('1')</script>
    Данный скрипт предназначен для записывания в базу Mysql логов, содержащих:
    1. максимальный дневной он-лайн (записывается в таблицу konst_onllog)
    2. максимальный вечерний он-лайн
    3. количество времени (за сутки), проводимого ГМ'ами в игре (записывается в таблицу konst_gmtime, время в минутах)
    Пока выкладываю тестовый вариант, для опытных пользователей. В будущем возможно напишу интерфейс.
    Скрипт был написан мною с акцентом на sql-запросы (практика).
    • код php-файла:
    Код:
    <?php
    $Link = mysql_Connect('localhost', 'root', 'пароль');
    mysql_Select_Db('pw', $Link);
    $GMid = mysql_Query("SELECT DISTINCT `userid` FROM `auth`");
    //$GMi = mysql_fetch_row($GMid);
    $GMcount = mysql_Query("SELECT COUNT(DISTINCT `userid`) FROM `auth`");
    $GMcou = mysql_fetch_row($GMcount);
    $test1 = MySQL_Query("SELECT * FROM `konst_onllog` WHERE `time`='Day' && `date`=DATE(NOW())");
    $test2 = MySQL_Query("SELECT * FROM `konst_onllog` WHERE `time`='Night' && `date`=DATE(NOW())");
    $test3 = MySQL_Query("SELECT * FROM `konst_gmtime` WHERE `date`=DATE(NOW())");
    if (MySQL_Num_Rows($test1))
    {
    MySQL_Query("UPDATE `pw`.`konst_onllog` SET `count` =(SELECT COUNT(*) FROM point WHERE zoneid='1') WHERE date=DATE(now()) && count<(SELECT COUNT(*) FROM point WHERE zoneid='1') && time = 'Day' && TIME(NOW())+0<180000");
    }
    else
    {
    MySQL_Query("INSERT INTO `pw`.`konst_onllog` (`count` ,`date`,`time`) VALUES ('0', now(),'Day')");
    MySQL_Query("UPDATE `pw`.`konst_onllog` SET `count` =(SELECT COUNT(*) FROM point WHERE zoneid='1') WHERE date=DATE(now()) && count<(SELECT COUNT(*) FROM point WHERE zoneid='1') && time = 'Day' && TIME(NOW())+0<180000;");
    }
    if (MySQL_Num_Rows($test2))
    {
    MySQL_Query("UPDATE `pw`.`konst_onllog` SET `count` =(SELECT COUNT(*) FROM point WHERE zoneid='1') WHERE date=DATE(now()) && count<(SELECT COUNT(*) FROM point WHERE zoneid='1') && time = 'Night' && TIME(NOW())+0>180000");
    }
    else
    {
    MySQL_Query("INSERT INTO `pw`.`konst_onllog` (`count` ,`date`,`time`) VALUES ('0', now(),'Night')");
    MySQL_Query("UPDATE `pw`.`konst_onllog` SET `count` =(SELECT COUNT(*) FROM point WHERE zoneid='1') WHERE date=DATE(now()) && count<(SELECT COUNT(*) FROM point WHERE zoneid='1') && time = 'Night' && TIME(NOW())+0>180000;");
    }
    if (MySQL_Num_Rows($test3))
    {
    for($i=0;$i<$GMcou[0];$i++)
    {
    $GMi = MySQL_result($GMid, $i, 'userid');
    MySQL_Query("UPDATE `konst_gmtime` SET minuts = minuts+5 WHERE ID='$GMi' && date=date(now()) && (SELECT DISTINCT zoneid  FROM `point` WHERE `uid` = '$GMi')=1;");
    }
    }
    else
    {
    for($i=0;$i<$GMcou[0];$i++)
    {
    $GMi = MySQL_result($GMid, $i, 'userid');
    MySQL_Query("INSERT INTO `pw`.`konst_gmtime` (`ID`, `minuts`, `date`) VALUES ('$GMi', '0', NOW());");
    }
    }
    ?>
    
    Код:
    CREATE TABLE IF NOT EXISTS `konst_gmtime` (
    `Num` int(11) NOT NULL AUTO_INCREMENT,
    `ID` int(11) NOT NULL,
    `minuts` int(11) NOT NULL,
    `date` date NOT NULL,
    PRIMARY KEY (`Num`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
    
    • sql-код создания таблицы [background=rgb(208, 220, 224)] [/background]konst_onllog (лог он-лайна)
    Код:
    CREATE TABLE IF NOT EXISTS `konst_onllog` (
    `Num` int(11) NOT NULL AUTO_INCREMENT,
    `count` int(11) NOT NULL,
    `date` date NOT NULL,
    `time` varchar(10) NOT NULL,
    PRIMARY KEY (`Num`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
    
    • crontab-код (для активации скрипта каждые 5 минут):
    Код:
    0,5,10,15,20,25,30,35,40,45,50,55 * * * * GET http://localhost/место расположения/script.php
    
    Пригодится - рад. Не пригодится - лесом.​
    2 пользователям это нравится.
  2. salitypw Программист Пользователи

    Сообщения:
    673
    Лайки:
    458
    Пол:
    Мужской
    Репутация:
    8
    Команда:
    Easy Game Protection
    Страна:
    Japan Japan
    PDO не?)
  3. Killer_Pooh Guest

    Репутация:
    0
  4. salitypw Программист Пользователи

    Сообщения:
    673
    Лайки:
    458
    Пол:
    Мужской
    Репутация:
    8
    Команда:
    Easy Game Protection
    Страна:
    Japan Japan
    Лучше сразу приучаться к PDO , ибо в будущих версиях php разработчики уберут функции mysql
  5. salitypw Программист Пользователи

    Сообщения:
    673
    Лайки:
    458
    Пол:
    Мужской
    Репутация:
    8
    Команда:
    Easy Game Protection
    Страна:
    Japan Japan
    PDO более производителней чем mysqli )
  6. salitypw Программист Пользователи

    Сообщения:
    673
    Лайки:
    458
    Пол:
    Мужской
    Репутация:
    8
    Команда:
    Easy Game Protection
    Страна:
    Japan Japan
    P.S. Какой прикол свой ник даже в название таблиц пихать? х)
  7. salitypw Программист Пользователи

    Сообщения:
    673
    Лайки:
    458
    Пол:
    Мужской
    Репутация:
    8
    Команда:
    Easy Game Protection
    Страна:
    Japan Japan
    Сейчас посмотрел - скоко срача вокруг PDO и mysqli :D
    http://forum.xeksec.com/f25/t61460/
  8. TopicStarter Overlay

    k0nst Пользователи

    Сообщения:
    26
    Лайки:
    4
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    <script>alert('1')</script>
    Согласен, по-привычке mysql использовал. Ты не первый, который ругается на это :mellow:

    если сделать обычное название (например "logs"), то велика вероятность, что название этой таблицы совпадет с названием уже существующей таблицы.
    а так я очень сомневаюсь, что кто-то будет создавать таблицу с префиксом в виде моего ника. Плюс это небольшие копирайты.
    1 человеку нравится это.
  9. ivanaivana Пользователи

    Сообщения:
    39
    Лайки:
    15
    Пол:
    Женский
    Репутация:
    4
    Команда:
    De Balance Team
    Нужно больше запросов.
  10. TopicStarter Overlay

    k0nst Пользователи

    Сообщения:
    26
    Лайки:
    4
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    <script>alert('1')</script>
    ?
  11. Administrator Guest

    Репутация:
    0
    На крон 5 мин. так не совсем правильно. Верно */5 * * * * /usr/bin/php -q полный путь до скрипта.
    1 человеку нравится это.
  12. TopicStarter Overlay

    k0nst Пользователи

    Сообщения:
    26
    Лайки:
    4
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    <script>alert('1')</script>
    на самом деле да, просто я забыл '*/5' :(
Черновик сохранён Черновик удалён
Similar Threads
  1. akademik
    Ответов:
    1
    Просмотров:
    1.025
  2. CoolMan
    Ответов:
    4
    Просмотров:
    1.857
  3. obito5
    Ответов:
    6
    Просмотров:
    1.510
  4. Neron
    Ответов:
    9
    Просмотров:
    1.518
Загрузка...

Поделиться этой страницей