Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Скрипты для RusHub'а _ ChatHistorySQL

Автор: Saymon 25.7.2010, 22:57

Название: ChatHistorySQL
Версия скрипта: 1.00
Автор: alex82
Перевод под RusHub: Saymon (Версия скрипта для PtokaX http://mydc.ru/topic3682.html.)

Описание:
Скрипт предназначен для сохранения истории сообщений главного чата в базе данных MySQL, и последующего вывода ее при подключении к хабу, либо по запросу. Имеется возможность поиска сообщений по нику, IP-адресу, или тексту. Также имеется возможность создания резервной копии базы данных скрипта непосредственно с помощью меню хаба, либо команды в главном чате. Скрипт умеет самостоятельно восстанавливать соединение с сервером MySQL.

Для работы скрипта требуется библиотека MySQL.
Перед запуском скрипта необходимо создать базу данных MySQL.


 ChatHistorySQL.tar ( 30 килобайт ) : 17
 

Автор: Otshelnik-Fm 26.7.2010, 14:50

как правильно в php my admin сделать запрос для создания таблиц бд?

Автор: Setuper 26.7.2010, 15:01

Каких таблиц? Написано же, что нужно создать базу, а не таблицы. Таблицы скрипт в базе создаёт сам big_smile.gif

Автор: Otshelnik-Fm 26.7.2010, 15:25

Да. все верно. я просто забыл добавить пользователю в mysql привелегии к этой базе.

Автор: Otshelnik-Fm 28.7.2010, 18:55

Цитата
[Tue Jul 27 10:18:23 2010] C:/rushub_2.1.6/scripts/ChatHistorySQL.lua:401: LuaSQL: Error executing query. MySQL: MySQL server has gone away


А бд всегда запущена. там еще сайт крутится.

Автор: Saymon 3.12.2010, 13:54

Поправил пару ошибок перевода. Перезалил в первом посте.

Автор: Herurg 27.12.2010, 16:08

При запуске скрипта вылетает ошибка в чат.

Код
[19:08:33] <rushub> *** Herurg, при запуске скрипта "ChatHistorySQL.lua " произошла ошибка: error loading module 'luasql.mysql' from file '/usr/lib/lua/5.1/luasql/mysql.so':
    /usr/lib/lua/5.1/luasql/mysql.so: undefined symbol: lua_getfield


Все модули и библиотеки установлены.

Автор: Kingston 6.1.2011, 4:34

Herurg такая же проблема.. этой функции lua_getfield не хватает в луа плагине

Автор: Setuper 6.1.2011, 12:18

функция lua_getfield будет в луа плагине только при статической линковке либы lua.a с луа плагином при сборке, а я так полагаю, что у вас lua линкуется как shared lib, поэтому не может идти речи о том чтобы луа плагин содержал функцию lua_getfield.

Поэтому нужно либо собирать луа плагин со статической линковкой lua, либо пересобирать либу mysql.so, подстраивая её под shared lib

Автор: Angel_D 22.8.2011, 16:13

что-то вылетает хаб 2.3.6 х64 с этим скриптом...

Автор: CrazyKiller 22.8.2011, 16:36

Цитата(Angel_D @ 22.8.2011, 17:13) *
что-то вылетает хаб 2.3.6 х64 с этим скриптом...



Логи покажи !

Автор: Angel_D 23.8.2011, 22:13

Решилось переходом на х32 версию.

В принципе попытка всё собрать на х64 носила экспериментальный характер, но пожалуй на текущий момент х64 решение RusHub-а скорее формальное. Вылетает не по чём, gd.dll под х64 не нашелся...

Автор: ShadoWx 1.10.2011, 21:46

при запросе вывода за определенный срок выводит такое:

Цитата
Лог сообщений за 01 РћРєС‚ 2011:
сами сообщения нормальны..кодировка бд в 1251
месяца он коверкает ..подскажите в чем проблема ??

отрывок из скрипта
Код
            local time = os.time(t)
            local msg = GetLog(UID,"`time`>="..time.." AND `time`<"..time+86400)
            if #msg == 0 then
                return "Не найдено ни одного сообщения за "..os.date("%d %b %Y",time).."."
            else
                return "Лог сообщений за "..os.date("%d %b %Y",time)..":"..msg
            end
        else
            return "Ошибка: отсутствует соединение с базой данных."
        end
    end},

Автор: Ksan 2.10.2011, 0:14

Не знаю, связано это с твоей проблемой или нет, но мне бросилось в глаза вот это:

Код
os.date("%d %b %Y",time)

почему тут месяц через %b, а не через %m ?
Нет ли в Русхабе чего-то такого, что позволяло бы выражаться так, как ты написал?

Автор: Setuper 2.10.2011, 0:36

Ksan, http://mydc.ru/topic574.html

Автор: КрутойПерец 28.3.2012, 22:21

Итак, решил поставить сей чудный скрипт на rushub 2.3.9. База у меня MariaDB 5.3.5 х64 на win х64, работает быстрее стандартного мускуля и 100% совместимая с базами оного. Всё работает идеально, кроме 2х косяков, одного фатального, другого абсолютно незначительного.

1 она же фатальная - в чате пишем любой текст и в ту же строчку вставляем магнет-ссылку, например "классная немецкая клубника magnet:?xt=urn:tree:tiger:....." rushub умирает. Буквально мрет зараза, в логах ошибок нет, видимо не успевает записать. Магнет-ссылка без текста - прекрасно проходит в чате, в базу все пишется великолепно, вот такие пироги beat_plaster.gif
2 она же абсолютно незначительная - у меня кодировка на win МарияДБ в utf8_general_ci (точно так же, как и стандартный мускуль, настроенный на UTF8), русхаб под win передает в cp1252 (например "инфа сохраняется"), да и хрен бы с ним, главное, что пишется великолепно. Если брать эти данные от русхаба в ср1252 и перекодировать в utf8 на php - все шикарно still_dreaming.gif Вот только 1 НО, если базу сделать cp1252_general_ci, данные вообще не будут записываться extreme_sexy_girl.gif

Естественно попробовал на простоМускуле под utf8 - писалось все аналогично инфа сохраняется, а в ср1252 нифига. Вот так вот =)

Автор: Saymon21 28.3.2012, 22:34

1) Проверил только что на дебиане. Всё работает. Попробуй в настройках русхаба поставить iMaxLevel 6 и попробуй рядом с rushub.exe положить pdb файлы. После всего этого повторить, то, что делал. Если упадёт, и будут данные о падении - пиши в эту тему: http://mydc.ru/topic2910.html

Автор: Alexey 28.3.2012, 23:25

Цитата(Saymon21 @ 28.3.2012, 22:34) *
и попробуй рядом с rushub.exe положить pdb файлы.

Пользователям линуксов вместо этого надо запускать русхаб под gdb и после падения постить бэктрейс в указанной выше теме.

Автор: Saymon21 29.3.2012, 1:00

Alexey, Ты ещё кстати забыл

Код
CXXFLAGS = -g -Wall -Wextra -pipe

Автор: Setuper 29.3.2012, 11:42

Скорее всего косяк не в хабе, а в либе mysql.

Автор: ShadoWx 31.3.2012, 20:31

скомпилировал скрипт этот и он отказался работать ... не подскажете в чем проблема?

Автор: Setuper 1.4.2012, 12:37

Код
path = Core.sScriptsDir.."ChatHistorySQL/"

Автор: ShadoWx 1.4.2012, 12:39

Благодарю, работает! surrender.gif

Автор: ShadoWx 6.4.2012, 19:38

Подскажите, как правильнее в этом скрипте реализовать обрезку сообщений, которые выводятся в чат при коннекте ... лимитировать в определенное кол-во символов при достижении которого ставим символ '[...]', например.

Автор: KCAHDEP 21.6.2012, 20:30

Цитата(Setuper @ 1.4.2012, 13:37) *
Код
path = Core.sScriptsDir.."ChatHistorySQL/"

[Thu Jun 21 21:25:57 2012] /etc/rushub/scripts/config.lua:42: '}' expected (to close '{' at line 19) near '=' Теперь вот такая вот ошибка вылезает.

Автор: Saymon21 5.10.2012, 18:45

http://mydc.ru/index.html?showtopic=3682&view=findpost&p=34237

Автор: Saymon21 24.6.2013, 15:02

Цитата(ShadoWx @ 6.4.2012, 20:38) *
Подскажите, как правильнее в этом скрипте реализовать обрезку сообщений, которые выводятся в чат при коннекте ... лимитировать в определенное кол-во символов при достижении которого ставим символ '[...]', например.

Added.