myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 
2 страниц V  < 1 2  
Ответить в данную темуНачать новую тему

> ChatHistorySQL, История чата

Рейтинг 5 V
Теги
Артём
сообщение 24.10.2011, 17:19
Сообщение #21


Наруто на аваторке
***********

Группа: Пользователи
Сообщений: 2 604
Регистрация: 11.10.2008
Из: Харькова
Пользователь №: 771
Спасибо сказали: 761 раз




sergius, нет, не ждать пока тебе дадут ссылку, а самому взять и в поиске на форуме найти.
Go to the top of the page
+Quote Post
sergius
сообщение 24.10.2011, 18:43
Сообщение #22


Начинающий
*

Группа: Пользователи
Сообщений: 23
Регистрация: 21.4.2009
Пользователь №: 3 131
Спасибо сказали: 0 раз




Цитата(Артём @ 24.10.2011, 17:19) *
sergius, нет, не ждать пока тебе дадут ссылку, а самому взять и в поиске на форуме найти.


Ты нормальный вообще? Речь о библиотеке идёт, а не ссылке...
Go to the top of the page
+Quote Post
Артём
сообщение 24.10.2011, 18:48
Сообщение #23


Наруто на аваторке
***********

Группа: Пользователи
Сообщений: 2 604
Регистрация: 11.10.2008
Из: Харькова
Пользователь №: 771
Спасибо сказали: 761 раз




sergius, в полне нормальный, а я о ссылке на библиотеке к новой птоке, где скачал птоку там и библиотеки бери big_smile.gif
Go to the top of the page
+Quote Post
sergius
сообщение 24.10.2011, 23:07
Сообщение #24


Начинающий
*

Группа: Пользователи
Сообщений: 23
Регистрация: 21.4.2009
Пользователь №: 3 131
Спасибо сказали: 0 раз




Там где скачал птоку, там библиотек нет, а те что здесь пока не удалось запустить.
Go to the top of the page
+Quote Post
mariner
сообщение 24.10.2011, 23:20
Сообщение #25


Местная ТехПоддержка
**********

Группа: Администраторы
Сообщений: 1 874
Регистрация: 18.7.2008
Из: Моск. Обл, г. королев, район Болшево
Пользователь №: 221
Спасибо сказали: 219 раз




и не удастся. Проси сетапера собрать либу, ибо ППК MySQL, помнится, не собирал.
Go to the top of the page
+Quote Post
Saymon21
сообщение 28.11.2011, 12:59
Сообщение #26


Site Reliability Engineer
*********

Группа: Модераторы
Сообщений: 1 772
Регистрация: 27.6.2009
Из: Чувашия, г. Чебоксары
Пользователь №: 3 719
Спасибо сказали: 478 раз




Мб кому нужно будет, добавил возможность выбора через меню, получать чат лог при входе на хаб или нет. big_smile.gif
+ багфикс из #9 поста.
Прикрепленные файлы
Прикрепленный файл  ChatHistorySQL_mod.tar.gz ( 6 килобайт ) Кол-во скачиваний: 16
 
Go to the top of the page
+Quote Post
DEN 007
сообщение 20.8.2012, 23:47
Сообщение #27


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 276
Регистрация: 23.3.2010
Из: РФ Смоленск
Пользователь №: 6 429
Спасибо сказали: 60 раз




по какой-то магии, работающий энное время скрипт начал выдавать ошибку...
Код
21.08.2012 00:23:03 - /home/SmolHUB/ptokax/scripts/ChatHistorySQL.lua:402: LuaSQL: Error executing query. MySQL: MySQL server has gone away

с завидной периодичностью, мускуль не падал, скрипт должен сам пере подключатся если конекта нет, но он этого не делает, скрипт не вылетает продолжает работать.
402 строчка
Код
    local cur = assert(con:execute("SELECT `time` FROM `"..tDBCfg.Prefix.."correct_time` WHERE `nick`='"..nick:sqlescape().."' LIMIT 1"))

функция целиком
Код
function GetCorrTime(nick)
    local cur = assert(con:execute("SELECT `time` FROM `"..tDBCfg.Prefix.."correct_time` WHERE `nick`='"..nick:sqlescape().."' LIMIT 1"))
    if cur:numrows() > 0 then
        return tonumber(cur:fetch({},"a").time)
    end
    return 0
end
Go to the top of the page
+Quote Post
serxxx
сообщение 3.10.2015, 13:45
Сообщение #28


Начинающий
*

Группа: Пользователи
Сообщений: 10
Регистрация: 8.4.2014
Пользователь №: 12 382
Спасибо сказали: 0 раз




Цитата(DEN 007 @ 21.8.2012, 0:47) *
по какой-то магии, работающий энное время скрипт начал выдавать ошибку...
Код
21.08.2012 00:23:03 - /home/SmolHUB/ptokax/scripts/ChatHistorySQL.lua:402: LuaSQL: Error executing query. MySQL: MySQL server has gone away

с завидной периодичностью, мускуль не падал, скрипт должен сам пере подключатся если конекта нет, но он этого не делает, скрипт не вылетает продолжает работать.
402 строчка
Код
    local cur = assert(con:execute("SELECT `time` FROM `"..tDBCfg.Prefix.."correct_time` WHERE `nick`='"..nick:sqlescape().."' LIMIT 1"))

функция целиком
Код
function GetCorrTime(nick)
    local cur = assert(con:execute("SELECT `time` FROM `"..tDBCfg.Prefix.."correct_time` WHERE `nick`='"..nick:sqlescape().."' LIMIT 1"))
    if cur:numrows() > 0 then
        return tonumber(cur:fetch({},"a").time)
    end
    return 0
end

Такая же проблема, историю выдает только после запуска скрипта при первом подключении к mysql. Через время подключиться к mysql уже не может
Go to the top of the page
+Quote Post
Saymon21
сообщение 3.10.2015, 14:22
Сообщение #29


Site Reliability Engineer
*********

Группа: Модераторы
Сообщений: 1 772
Регистрация: 27.6.2009
Из: Чувашия, г. Чебоксары
Пользователь №: 3 719
Спасибо сказали: 478 раз




https://dev.mysql.com/doc/refman/5.0/en/gone-away.html


Спасибо сказали:
Go to the top of the page
+Quote Post
serxxx
сообщение 3.10.2015, 15:27
Сообщение #30


Начинающий
*

Группа: Пользователи
Сообщений: 10
Регистрация: 8.4.2014
Пользователь №: 12 382
Спасибо сказали: 0 раз




Saymon21, Это читал, просто я не силен в этом чтоб проанализировать код и понять причину
сначала в коде нашел 2 строчки с закрытием f:close() и cur:close() и удалил их чтоб не закрывали соединение. Не получилось.
добавил в проблемную строчку
cur:close()
Код
function GetCorrTime(nick)
    local cur = assert(con:execute("SELECT `time` FROM `"..tDBCfg.Prefix.."correct_time` WHERE `nick`='"..nick:sqlescape().."' LIMIT 1"))
    if cur:numrows() > 0 then
        return tonumber(cur:fetch({},"a").time)
    end
    cur:close()
    return 0
end

вышла другая ошибка Lost connection to MySQL server during query
Go to the top of the page
+Quote Post
Saymon21
сообщение 3.10.2015, 16:04
Сообщение #31


Site Reliability Engineer
*********

Группа: Модераторы
Сообщений: 1 772
Регистрация: 27.6.2009
Из: Чувашия, г. Чебоксары
Пользователь №: 3 719
Спасибо сказали: 478 раз




Тогда прочитай ещё раз, пока не поймёшь, что там написано.
Не всегда дело только в скриптах.
Go to the top of the page
+Quote Post
serxxx
сообщение 3.10.2015, 16:20
Сообщение #32


Начинающий
*

Группа: Пользователи
Сообщений: 10
Регистрация: 8.4.2014
Пользователь №: 12 382
Спасибо сказали: 0 раз




Saymon21, ну так там написано:
Если это получено в скрипте, то достаточно просто повторить запрос от клиента, чтобы соединение автоматически восстановилось.
В инструкции прочитал как делать запрос
Метод выполнения SQL запроса к базе данных: conn:execute("запрос")
он в коде есть
Код
function GetCorrTime(nick)
    local cur = assert(con:execute("SELECT `time` FROM `"..tDBCfg.Prefix.."correct_time` WHERE `nick`='"..nick:sqlescape().."' LIMIT 1"))
    if cur:numrows() > 0 then
        return tonumber(cur:fetch({},"a").time)
    end
    cur:close()
    return 0
end

Сам MySQL работает без проблем, помимо хаба на хостинге работает сайт с чатом
Go to the top of the page
+Quote Post
Saymon21
сообщение 3.10.2015, 16:27
Сообщение #33


Site Reliability Engineer
*********

Группа: Модераторы
Сообщений: 1 772
Регистрация: 27.6.2009
Из: Чувашия, г. Чебоксары
Пользователь №: 3 719
Спасибо сказали: 478 раз




Сайту, особенно если тот на пхп, может быть и пофиг на подобные вещи. Это раз. Два: Сделай условие на Check()


Спасибо сказали:
Go to the top of the page
+Quote Post
serxxx
сообщение 3.10.2015, 16:57
Сообщение #34


Начинающий
*

Группа: Пользователи
Сообщений: 10
Регистрация: 8.4.2014
Пользователь №: 12 382
Спасибо сказали: 0 раз




Saymon21, поставил wait_timeout 7200 (2 часа) в MYSQL
Т.е. будет работать если в течении 2-х часов будет запрос на историю
Это конечно не решение, посмотрю на нагрузку. Минут 10 работает без проблем на данный момент

UPD Проблема решена, нагрузка не возросла
Saymon21 спасибо вам
Go to the top of the page
+Quote Post
Tsd
сообщение 16.10.2017, 19:42
Сообщение #35


Продвинутый участник
****

Группа: Пользователи
Сообщений: 174
Регистрация: 11.7.2008
Пользователь №: 171
Спасибо сказали: 177 раз




Цитата(serxxx @ 3.10.2015, 15:57) *
Saymon21, поставил wait_timeout 7200 (2 часа) в MYSQL
Т.е. будет работать если в течении 2-х часов будет запрос на историю
Это конечно не решение, посмотрю на нагрузку. Минут 10 работает без проблем на данный момент

UPD Проблема решена, нагрузка не возросла
Saymon21 спасибо вам

Я решил проблему проверкой функции Check() по таймеру (10 минут).


Скрипт безусловно хорош, но я заметил некую странность (может у меня одного лыжи не едут?). При выводе запроса лога `Сообщения за указанную дату` скрипт выдавал лог с произвольного часа этого дня, захватывая следующий день. Решил проблему так:
Заменил строку
Код
t = {year = tonumber(y),month = tonumber(m),day = tonumber(d)}

На
Код
t = {year = tonumber(y),month = tonumber(m),day = tonumber(d),hour = 0,min = 0,sec = 0}

Кстати, на Debian пришлось изменить строку
Код
require "luasql.mysql"

На
Код
local luasql = require "luasql.mysql"

P.S. Спасибо Kinsler за помощь.
Go to the top of the page
+Quote Post

2 страниц V  < 1 2
Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No new Topic has attachmentsChatHistorySQL
История чата (MySQL)
26 Saymon21 12 147 24.6.2013, 15:02 Посл. сообщение: Saymon21
No new Topic has attachmentsChatHistorySQL
История чата
18 Vizunchik 5 260 5.9.2012, 8:37 Посл. сообщение: ShadoWx
No New Posts Topic has attachmentsОт: ChatHistorySQL
От темы с ID: 3682
2 Kingston 2 161 9.11.2010, 12:08 Посл. сообщение: WINS

 



RSS Сейчас: 24.11.2017, 14:06