MyDC.ru _ Скрипты с MySQL [PtokaX] _ AJAX Chat sync 2.0.3
Автор: deseven 18.5.2011, 23:21
Информация: Простое решение для синхронизации PtokaX и http://mydc.ru/r/?https://blueimp.net/ajax/.
Требования: - AJAX Chat (любая версия, пока структура таблицы ajax_chat_messages остается прежней) - http://mydc.ru/r/?http://www.keplerproject.org/luasql/index.html (http://mydc.ru/topic1508.html)
Установка: Прежде всего отредактируйте настройки в скрипте, в соответствии с вашими потребностями. Для корректной работы с русским языком требуется в конфиг mysql (my.cnf либо my.ini) в секцию [mysqld] добавить следующие параметры:
Запустите скрипт из PtokaX. Все должно работать, но не забудьте на всякий пожарный проверить script.log на наличие ошибок.
Примечания: - скрипт рекомендуется запускать перед всеми остальными скриптами, порядок загрузки можно изменить в конфиге scripts.xml - если lua 5.1 собран с флагом LUA_COMPAT_GFIND, то возможно потребуется раскомментировать строку 56 и закомментировать строку 57 - система банов в скрипте на данный момент проверяет бан при каждом сообщении непосредственно через mysql, в некоторых случаях это может создать повышенную нагрузку на сервер и задержку при отправлении сообщений. Я лично не наблюдаю особой нагрузки у себя, но тем не менее по умолчанию система банов в скрипте отключена - если вы баните юзера с хаба - AJAX Chat не применит этот бан моментально - только когда юзер снова залогинится. Это его дефолтное поведение. Желающие могут изменить его немного пошаманив с исходниками, подробнее http://mydc.ru/r/?http://deseven.info/ajaxchat/ (простите, на русский перевести нет времени)
Известные баги: - нет вменяемой обработки mysql-ошибок, сделаю как будет время
Проверено на Fedora 14, lua 5.1.4, luasql 2.1.1 под PtokaX 0.4.1.2 с 300+ юзерами.
P.S. Знатокам lua просьба глянуть исходники. Это мое первое поделие на lua и возможно кое-какие вещи я делаю не особо правильно
Автор: Ksan 19.5.2011, 0:38
И всё же лучше файл прикрепить через аттач! Тут так принято.
Автор: deseven 19.5.2011, 9:26
ок, перевел заодно
Автор: Saymon21 19.5.2011, 12:21
Цитата
- AJAX Chat (любая версия, пока структура таблицы ajax_chat_messages остается прежней) - luasql.mysql
Или http://mydc.ru/topic1508.html
Автор: deseven 28.5.2011, 0:41
2.0.2 - добавлено экранирование при отправке обратного слеша - поправлена обработка личных сообщений из AJAXChat
Автор: Pasag 18.8.2011, 17:45
поставил, у меня почему то написанное в ajaxe на русском языке на хабе отображается вопросами (??? ??) и обратно в Ajax не идут сообщения. подскажите что сделать?
Автор: deseven 20.8.2011, 13:57
Какие кодировки в птоке и в БД AJAXChat? Версия mysql?
Автор: Pasag 25.8.2011, 12:30
версия MySql 5.5 в бд стоит cp1251 а в Ajax utf8
Автор: deseven 26.8.2011, 3:42
Не понял где какая кодировка. В какой бд? Предполагая что в птоке таки 1251, а у аякс чата утф8 могу только предположить, что косяк с конфигом mysql.
Попробуй 71 строку заменить на
Код
local Query = "set names utf8; select id,convert(userName using "..PtokaXCodepage..") as userName,convert(text using "..PtokaXCodepage..") as text from ajax_chat_messages where id > "..LastMsgID.." and userID != 50000 and userID != 2147483647 order by id;"
Насчет обратного процесса - что в script.log? Что будет если вручную в mysql сделать такой запрос?
Код
insert into ajax_chat_messages (userName,dateTime,text,userID) values ('test',now(),'тест','50000')
Автор: demondroid 28.8.2011, 23:40
кстати надо бы и антирекламу сюда прикрутить ато появится много деятелей которые чесез чат с сайта будут рекламу кидать!!!
Автор: deseven 29.8.2011, 3:45
Мне без надобности. Кроме того, это надо делать со стороны чата на сайте, а не на хабе, иначе смысл нулевой. Если нужно просто блокировать определенные слова то у аякс-чата было что-то встроенное для этого.
Автор: fmit 26.12.2011, 16:29
Не подскажите где поправить в скрипте,чтобы визуально разграничить пользователей хаба и допустим форума ... ну например ----[хаб]test1: привет ----[форум]test2: привет
local Query = "insert into ajax_chat_messages (userName,dateTime,text,userID) values (convert(_"..PtokaXCodepage.."'[хаб]"..nick.."' using "..AJAXChatCodepage.."),'"..when.."','"..chat.."','50000')"
Автор: KCAHDEP 3.5.2012, 21:51
Доброго времени суток, очень охото заиметь такой работающий webchat но к сожалению в логе ошибок выводит вот это:
в указанной БД отсутствуют таблицы ajax-чата сам чат то каким макаром работает?
Автор: KCAHDEP 5.5.2012, 6:17
Цитата(deseven @ 4.5.2012, 23:23)
в указанной БД отсутствуют таблицы ajax-чата сам чат то каким макаром работает?
http://mydc.ru/r/?http://forum.kcahdep.ru/chat/ вот так работает... Так бд с именем указанным в скрипте создал, а почему он не создает таблицы, в чем может быть причина?
Автор: deseven 5.5.2012, 6:38
Стоп, у вас явное непонимание того, как оно должно работать БД создается при установке AJAX Chat, он с ней работает. Потом параметры подключения к этой же БД нужно прописать в скрипте. Сам скрипт ничего не создает.
Автор: KCAHDEP 5.5.2012, 22:48
Цитата(deseven @ 5.5.2012, 7:38)
Стоп, у вас явное непонимание того, как оно должно работать БД создается при установке AJAX Chat, он с ней работает. Потом параметры подключения к этой же БД нужно прописать в скрипте. Сам скрипт ничего не создает.
то есть в скрипте указать базу созданную чатом ajax? щаз попробую
теперь другая бяда) все заработало все выводит только вот както так)) http://mydc.ru/r/?http://shot.qip.ru/008pDF-2Dbzb2qCL/ хотя кодировку проверил все верно стоит, база ajax utf8 птока cp1251... и вот еще вопрос, скрипт должен как то считывать кто находится на хабе и выводить в список онлайн с права? и как я понял для входа в чат нужна регистрация на форуме? код что давали выше не работает, как показывает вопросами так и показывает.
в идеале заиметь бы что нибудь для общения сайт-хаб без форума и реги ))
Автор: deseven 6.5.2012, 8:06
кажется понял, попробуйте
замените строку 71 на
Код
local Query = "set names "..PtokaXCodepage.."; select id,userName,text from ajax_chat_messages where id > "..LastMsgID.." and userID != 50000 and userID != 2147483647 order by id;"
замените строку 349 на
Код
local Query = "insert into ajax_chat_messages (userName,dateTime,text,userID) values (convert(_"..PtokaXCodepage.."'"..nick.."' using "..AJAXChatCodepage.."),'"..when.."',convert(_"..PtokaXCodepage.."'"..chat.."' using "..AJAXChatCodepage.."),'50000')"
Цитата(KCAHDEP @ 6.5.2012, 1:48)
скрипт должен как то считывать кто находится на хабе и выводить в список онлайн с права?
я этого не делал, потому что это потребует модификации файлов чата в общем-то процесс простой - при коннекте юзера на хаб пишем инфу о нем в `ajax_chat_online`, при дисконнекте удаляем оттуда же вот только чат регулярно проверяет сессии сам и удаляет зависшие, а так как в реальности юзеров хаба в чате как бы и нет, то придется чуток изменить функцию проверки сессий в самом чате может как-нибудь сделаю, но мне нравится так как есть - юзеры с хаба отображаются серым шрифтом в таком случае и отлично разграничиваются, сразу понятно кто где
Цитата(KCAHDEP @ 6.5.2012, 1:48)
в идеале заиметь бы что нибудь для общения сайт-хаб без форума и реги ))
дык чат можно поставить и не интегрируя с форумом, он отлично умеет работать самостоятельно, тогда и регистрация не нужна если все же оставлять как есть то можно разрешить вход анонимам и также разрешить им устанавливать свои ники - в конфиге чата ищите
Автор: KCAHDEP 6.5.2012, 21:00
Цитата
замените строку 71 на
Код
local Query = "set names "..PtokaXCodepage.."; select id,userName,text from ajax_chat_messages where id > "..LastMsgID.." and userID != 50000 and userID != 2147483647 order by id;"
замените строку 349 на
Код
local Query = "insert into ajax_chat_messages (userName,dateTime,text,userID) values (convert(_"..PtokaXCodepage.."'"..nick.."' using "..AJAXChatCodepage.."),'"..when.."',convert(_"..PtokaXCodepage.."'"..chat.."' using "..AJAXChatCodepage.."),'50000')"
Помогло но не до конца...С хаба в чат все на родном русском кажет, с чата в хаб просто не проходят сообщения, и через несколько минут в чате появляется сообщение
Код
(21:47:21) ChatBot: Ошибка: Статус соединения: 503
при повторном заходе в чат выдает
Код
General Error SQL ERROR [ mysqli ]
Too many connections [1040]
An sql error occurred while fetching this page. Please contact an administrator if this problem persists.
В логе хаба
Код
06.05.2012 21:33:28 - /var/ptokax/scripts/ajaxchatsync-ru.lua:73: LuaSQL: Error executing query. MySQL: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select id,userName,text from ajax_chat_messages where id > 302 and userID != 500' at line 1
Цитата
я этого не делал, потому что это потребует модификации файлов чата в общем-то процесс простой - при коннекте юзера на хаб пишем инфу о нем в `ajax_chat_online`, при дисконнекте удаляем оттуда же вот только чат регулярно проверяет сессии сам и удаляет зависшие, а так как в реальности юзеров хаба в чате как бы и нет, то придется чуток изменить функцию проверки сессий в самом чате может как-нибудь сделаю, но мне нравится так как есть - юзеры с хаба отображаются серым шрифтом в таком случае и отлично разграничиваются, сразу понятно кто где.
Просто не видно же кто на хабе пока не напишет сообщение. Очень хотелось вы увидеть вариант скрипта со списком пользователей ))
Цитата
дык чат можно поставить и не интегрируя с форумом, он отлично умеет работать самостоятельно, тогда и регистрация не нужна если все же оставлять как есть то можно разрешить вход анонимам и также разрешить им устанавливать свои ники - в конфиге чата ищите
Очень приятная новость, я увидел на сайте ajax только варианты под форумы, удалю попробую голый чат. Спасибо за очень полезный скрипт, надеюсь вы добьетесь, что бы он у меня заработал)
Автор: deseven 6.5.2012, 21:44
Цитата(KCAHDEP @ 7.5.2012, 0:00)
Too many connections [1040]
Это то, о чем написано в первом посте... Нет грамотной обработки ошибок и остаются подвисшие соединения когда запрос завершается с ошибкой. И фиг с ним пока, ошибок быть вообще не должно.
Цитата(KCAHDEP @ 7.5.2012, 0:00)
В логе хаба
Код
06.05.2012 21:33:28 - /var/ptokax/scripts/ajaxchatsync-ru.lua:73: LuaSQL: Error executing query. MySQL: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select id,userName,text from ajax_chat_messages where id > 302 and userID != 500' at line 1
Нипанятна. Перепроверил запрос - все отлично. Может вы неправильно скопировали-вставили?
Цитата(KCAHDEP @ 7.5.2012, 0:00)
Просто не видно же кто на хабе пока не напишет сообщение. Очень хотелось вы увидеть вариант скрипта со списком пользователей ))
Повторюсь - мне бы не хотелось вводить необходимость еще и модификации файлов чата. Но я подумаю как-нибудь.
Цитата(KCAHDEP @ 7.5.2012, 0:00)
я увидел на сайте ajax только варианты под форумы
http://mydc.ru/r/?http://sourceforge.net/projects/ajax-chat/files/ajax-chat/0.8.5/, последний
Автор: KCAHDEP 7.5.2012, 3:03
Все снес поставил чистый ajax, теперь блин что с исправлениями что без с чата в хаб не проходят сообщения, с хаба в чат абракадабра, и в логах птоки
Код
07.05.2012 03:55:25 - /var/ptokax/scripts/ajaxchatsync.lua:73: LuaSQL: Error executing query. MySQL: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select id,userName,text from ajax_chat_messages where id > 8 and userID != 50000' at line 1
заглянул до кучи в логи апача
Код
PHP Notice: Undefined index: zh in /home/kcahdep/www/chat/lib/class/AJAXChatTemplate.php on line 257, referer: http://chat.kcahdep.ru/
и через несколько минут виснет наглухо база.
что же мне так везет то хронически...
Автор: deseven 7.5.2012, 8:25
у меня больше нет идей ок, на днях поставлю себе на виртуалку дебиан или бубунту какую и проверю на дефолтных конфигах
Автор: mariner 7.5.2012, 9:03
А попробуйте в коде махнуть != на <>
Автор: deseven 7.5.2012, 10:41
Да я вот и думаю, что видимо есть какие-то отличия в синтаксисе mysql 5.0 и 5.1. Хотя вряд ли они такие радикальные чтобы != не работало... В любом случае буду проверять. Я изначально сделал не слишком верно - заточил скрипт под свой конфиг mysql, а у меня там много чего изменено, включая и дефолтную кодировку например. Надо от этого избавляться. Как разберусь - выкачу исправленную версию.
Автор: KCAHDEP 7.5.2012, 12:28
Цитата(deseven @ 7.5.2012, 11:41)
Да я вот и думаю, что видимо есть какие-то отличия в синтаксисе mysql 5.0 и 5.1. Хотя вряд ли они такие радикальные чтобы != не работало... В любом случае буду проверять. Я изначально сделал не слишком верно - заточил скрипт под свой конфиг mysql, а у меня там много чего изменено, включая и дефолтную кодировку например. Надо от этого избавляться. Как разберусь - выкачу исправленную версию.
Заранее спасибо, буду с нетерпением ждать новую версию!
Автор: deseven 7.5.2012, 21:12
2.0.3 - переписаны запросы для отправки и получения сообщений - файл с id последнего сообщения больше не нужен - скрипт сам возьмет айди последнего сообщения из базы при старте - обновлены инструкции в первом сообщении
В общем без изменения конфига у меня ничего не получилось. Mysql из коробки некорректно работает с utf8 (или я чего-то не понимаю) и простыми запросами у меня это исправить не вышло. Даже при принудительном указании кодировок (server, client, connection) ничего не меняется, помог только skip-character-set-client-handshake в конфиге.
Проверено на убунту 10.04. На боевой сервак апдейт пока не ставил, ибо там и так все прекрасно работает.
Автор: KCAHDEP 7.5.2012, 21:56
Цитата(deseven @ 7.5.2012, 22:12)
2.0.3 - переписаны запросы для отправки и получения сообщений - файл с id последнего сообщения больше не нужен - скрипт сам возьмет айди последнего сообщения из базы при старте - обновлены инструкции в первом сообщении
В общем без изменения конфига у меня ничего не получилось. Mysql из коробки некорректно работает с utf8 (или я чего-то не понимаю) и простыми запросами у меня это исправить не вышло. Даже при принудительном указании кодировок (server, client, connection) ничего не меняется, помог только skip-character-set-client-handshake в конфиге.
Проверено на убунту 10.04. На боевой сервак апдейт пока не ставил, ибо там и так все прекрасно работает.
уж и боюсь писать блин....уже поставил попробовал в чат сообщения идут на русском, апач заткнулся работает без ошибок, а вот в логе птоки...
Код
07.05.2012 22:43:12 - /var/ptokax/scripts/ajaxchatsync-ru.lua:205: attempt to index local 'row' (a nil value)
Автор: deseven 7.5.2012, 22:07
не беда, вы наверное просто скрипт запустили на пустой базе чата я это не учел и не сделал проверку после того как там появились сообщения ошибка больше появляться не должна
Автор: KCAHDEP 7.5.2012, 22:09
Цитата(deseven @ 7.5.2012, 23:07)
не беда, вы наверное просто скрипт запустили на пустой базе чата я это не учел и не сделал проверку после того как там появились сообщения ошибка больше появляться не должна
да ошибка перестала появляться, только вот сообщения с чата в хаб так и не идут...
Автор: deseven 7.5.2012, 22:10
перезапустите скрипт просто, тогда он найдет айди последнего сообщения и все должно заработать
Автор: KCAHDEP 7.5.2012, 22:14
Цитата(deseven @ 7.5.2012, 23:10)
перезапустите скрипт просто, тогда он найдет айди последнего сообщения и все должно заработать
Уряяяяя!!!! заработало!! Огромное спасибо вам!!! Жили бы рядом пивом бы напоил)))
local Query = "insert into ajax_chat_messages (userName,dateTime,text,userID) values (convert(_"..PtokaXCodepage.."'[хаб]"..nick.."' using "..AJAXChatCodepage.."),'"..when.."','"..chat.."','50000')"
только вот теперь этот код не срабатывает...перестает писать в общий чат, можно как нибудь это поправить? тобиш чтобы писал кто с сайта, а кто с хаба.
Автор: deseven 10.5.2012, 22:59
вставьте [хаб] и [форум] по аналогии, ничего сложного
Автор: KCAHDEP 11.5.2012, 10:57
Цитата(deseven @ 10.5.2012, 23:59)
вставьте [хаб] и [форум] по аналогии, ничего сложного
сори, это уже клиника, все работает) жду с нетерпением скрипт со списком юзеров хаба еще раз огромное спасибо!
Автор: KCAHDEP 19.5.2012, 21:32
готовы помочь материально развитию данного скрипта, очень нужно количество пользователей на хабе в списке пользователей чата.
Автор: deseven 20.5.2012, 14:10
Материальная помощь меня не сильно интересует, да и времени сейчас в любом случае нет. Думаю где-нибудь в июне засяду, не раньше.
Автор: KCAHDEP 24.5.2012, 22:10
бум ждать с нетерпением
Автор: deseven 14.6.2012, 1:43
Ближе к концу месяца думаю выложу тестовую версию с поддержкой отображения онлайна в обе стороны. Однако, в любом случае потребуется модификация файлов самого чата, иначе никак. Также изменю алгоритм системы банов чтобы не долбить базу при каждом входящем сообщении. Плюс ко всему для бана можно будет указывать причину.
Автор: KCAHDEP 14.6.2012, 6:54
Цитата(deseven @ 14.6.2012, 2:43)
Ближе к концу месяца думаю выложу тестовую версию с поддержкой отображения онлайна в обе стороны. Однако, в любом случае потребуется модификация файлов самого чата, иначе никак. Также изменю алгоритм системы банов чтобы не долбить базу при каждом входящем сообщении. Плюс ко всему для бана можно будет указывать причину.
Ура! Ура! Ура Товарищи!
Автор: ImDim 18.6.2012, 20:22
Возможно ли адаптировать скрипт под этот чат? elfChat?
Не скачивал, не смотрел. Один вопрос, что в нём особенного?
Автор: ImDim 18.6.2012, 23:41
Цитата(Saymon21 @ 18.6.2012, 21:27)
Не скачивал, не смотрел. Один вопрос, что в нём особенного?
Структура таблицы с сообщениями, все уже испробывал
Автор: deseven 19.6.2012, 6:05
Цитата(ImDim @ 18.6.2012, 23:22)
Возможно ли адаптировать скрипт под этот чат? elfChat?
Возможно, адаптируйте.
Автор: ImDim 19.6.2012, 12:00
Усе сделал, спасибо
Автор: KCAHDEP 2.7.2012, 13:49
Как продвигается усовершенствование скрипта?
Автор: deseven 24.7.2012, 5:07
пока никак к сожалению, много работы
Автор: KCAHDEP 24.7.2012, 21:43
бум ждать, очень полезная весч!
Автор: stanok 25.3.2013, 11:21
проблема с языком, на веб-страничке чата все на русском а в чат-хаба уходит в таком тексте (тест бля) так же с чата-хаба на веб-чат приходят квадратики
перековырял всё что можно несколько раз ничего не меняется, помогайте)
Автор: deseven 13.6.2013, 11:47
Цитата(stanok @ 25.3.2013, 14:21)
проблема с языком, на веб-страничке чата все на русском а в чат-хаба уходит в таком тексте (тест бля) так же с чата-хаба на веб-чат приходят квадратики
после 72 и 355 строки
Код
72: local con = assert(env:connect(MysqlDB,MysqlUser,MysqlPass,MysqlHost)) 355: local con = assert(env:connect(MysqlDB,MysqlUser,MysqlPass,MysqlHost))
добавь
Код
con:execute("set names "..PtokaXCodepage)
Автор: MaD 25.9.2013, 14:02
Проблема такая...
PtokaX - 4.1.2 - CP1251 Ajax Chat - UTF8 (ну у него все по дефолту, не менлось ничего)
Я упорно никак не могу срастить эту конфигурацию
Тоесть отправляешь с чата, в хаб приходит кракозябры и наоборот, с хаба в чат тоже. Пробовал все что писали выше не вышло. База Ajax'a сама в UTF8 тоже стоит. может кто поделится рабочим скриптиком ? М? )
Так с этим разобрался, с кодировками все ок, проблема в самом мускуле была.
Еще вопрос, а в AjaxChat можно ли видеть список пользователей всех которые сидят в хабе?
Автор: deseven 26.9.2013, 18:36
Цитата(MaD @ 25.9.2013, 17:02)
в AjaxChat можно ли видеть список пользователей всех которые сидят в хабе?
это фича о которой меня просили неоднократно, но у меня нет времени все довести до ума да и хаб со всей инфраструктурой давно отдан в поддержку другому человеку
Автор: KCAHDEP 26.9.2013, 19:51
Это было бы полезно если на хабе небольшое количество народа, я тоже сначала хотел такую фишку, а сейчас...накой нужен список 1к юзеров будет только мешать )))
Автор: MaD 27.9.2013, 2:12
Цитата(KCAHDEP @ 26.9.2013, 20:51)
Это было бы полезно если на хабе небольшое количество народа, я тоже сначала хотел такую фишку, а сейчас...накой нужен список 1к юзеров будет только мешать )))
Просто смысл в том что бы дать возможность общаться там тем, кто не может физически зайти на хаб в том числе с других провайдеров. У меня на нем почти 2к сидит и даже при этом это мне кажется было бы полезно. Ты заходишь на хаб и видишь кто там есть, можешь конкретно кому то написать, если он тебе нужен. А так получается ты в слепую немного общаешься.
Цитата(deseven @ 26.9.2013, 19:36)
это фича о которой меня просили неоднократно, но у меня нет времени все довести до ума да и хаб со всей инфраструктурой давно отдан в поддержку другому человеку
будем надеется что может быть найдется добрый или не очень человек, которые сделает хотя я конечно яростно в этом сомневаюсь. )
Автор: KCAHDEP 16.10.2013, 16:31
Люди добрые переделайте пожалуйста этот скрипт под verlihub
Автор: =Alexandr= 23.2.2015, 20:06
Скажите пожалуйста, когда я заливаю БД выскакивает ошибка