Я создал модуль регистрации, который записывает сообщения в базу данных mysql, текущий код находится здесь: https://github.com/amiadogroup/mod_log_chat_mysql5/blob/master/src/mod_log_chat_mysql5.erl
Проблема с текущим кодом заключается в том, что иногда соединение закрывается и в результатемодуль больше не работает.Как вы видите в коде, я храню DBRef в таблице ets, что не очень хороший способ.
Я спросил об этом список рассылки erlang, и они предложили мне подключиться к БД каксобственный дочерний процесс модуля.Это позволило бы модулю корректно перезапустить соединение при закрытии соединения.
Теперь мой вопрос: как я могу реализовать этот дочерний процесс с помощью gen_server и / или gen_mod?
Нужно ли мнесоздать два файла или я могу сделать это в одном файле?
Есть ли где-нибудь пример того, как мне этого добиться?
Редактировать: Как вы можете видетьв связанном репозитории github я обновил код и теперь он работает, крошка!Просмотр кода mod_Archive мне очень помог, хотя я не решил обновить свою версию ejabberd.
Я столкнулся с другой, но связанной с ней проблемой, теперь.В коде вы видите, что я делаю начальный запрос с «SET NAMES UTF8», чтобы предотвратить искажение сообщений.Похоже, это не будет сделано снова, если gen_server выполнит переподключение.Есть ли какой-нибудь хук, который я могу вызвать при переподключении, чтобы запрос UTF8 выполнялся каждый раз?
Edit # 2: Теперь я переключился на Emysql (https://github.com/Eonblast/Emysql), и он работает из коробкиуказав кодировку непосредственно при подключении. Код находится на github.
Спасибо за помощь, Майкл