LINUX.ORG.RU

Несколько вопросов по эрлангу и ejabberd

 ,


0

3

Мучаюсь с эрлангом, пишу свой модуль.

1. Возникла следующая проблема: есть строка, полученная в результате работы re:run, которую мне нужно вывести в логи

?INFO_MSG("mod_block: MSG NAME: ", lists:nth(1, Res))

Все бы хорошо, но в логах она упорно выводится в виде списка целых чисел:

=INFO REPORT==== 26-Jul-2012::08:33:34 ===
ERROR: "I(~p:~p:~p) : mod_block: MSG NAME: " - [<0.400.0>,
                                                                           mod_block,
                                                                           25,
                                                                           102,
                                                                           102,
                                                                           102]

-- Нужно вывести «fff».

Как заставить его выводить строку, а то дебажить жутко неудобно?

-- UPD. Первый вопрос решен:

?INFO_MSG("mod_block: MSG NAME: ", [lists:nth(1, Res)])

2. Для авторизации я использую внешний php-скрипт на основе этого http://www.drupal.ru/files/drupal_auth.php.txt. Он отлично работает, но мне нужно чтобы во время авторизации он загонял некоторых пользователей в некоторую таблицу, которая будет проверяться в моем модуле при вводе пользователем некоторых кастомных команд. Как бы это реализовать?

ПС. С эрлангом знаком плохо, так что сильно не пинайте.

★☆☆☆

2. Для авторизации я использую внешний php-скрипт на основе этого http://www.drupal.ru/files/drupal_auth.php.txt. Он отлично работает, но мне нужно чтобы во время авторизации он загонял некоторых пользователей в некоторую таблицу, которая будет проверяться в моем модуле при вводе пользователем некоторых кастомных команд. Как бы это реализовать?

1) у еджабберд есть модули для с постгресом/мускелем, если не устраивают они, возьми любые другие эрланговские драйвера для работы с бд, а из пхп скрипта просто пиши в удобную тебе базу

2) если по каким то причинам внешняя база не канает, можно использовать мнезию, тогда прийдется связывать пхп и ераланг, варианты на выбор - тот же хмпп, рест и даже есть php erlang node

Skolotovich ★★★
()
Ответ на: комментарий от Skolotovich

1) у еджабберд есть модули для с постгресом/мускелем, если не устраивают они, возьми любые другие эрланговские драйвера для работы с бд, а из пхп скрипта просто пиши в удобную тебе базу

Не будут ли они тормозить при большом количестве юзеров?

drull ★☆☆☆
() автор топика
Ответ на: комментарий от drull

при большом количестве юзеров?

«большом» это сколько?

лучше все таки смотреть на возможное количество запросов к базе, тип запросов и их сложность, а то «много пользователей» могут просто быть и при этом не создавать полезной нагрузки

Не будут ли они тормозить

надо смотреть на внутриности, проводить тесты, я их постгресовский модуль не пользовал

а вообще, если больше одного джаббер сервера не планируется, то пользуй ets для кеша и dets для постоянного хранения данных

Skolotovich ★★★
()
Ответ на: комментарий от Skolotovich

с мнезией я погорячился....

если планируется большая нагрузка, например ~500-1000 записей в секунду, и будет использоваться больше одного ejabberd сервера в кластере, мнезия подохнет на транзакциях, есть очень печальный опыт ):

Skolotovich ★★★
()
Последнее исправление: Skolotovich (всего исправлений: 1)
Ответ на: комментарий от Skolotovich

«большом» это сколько?

~10К онлайн, в базе аккаунтов ~300K, причем нужно будет делать JOIN с FEDERATED-таблицой на другом сервере для проверки прав.

drull ★☆☆☆
() автор топика
Ответ на: комментарий от drull

~10К онлайн, в базе аккаунтов ~300K, причем нужно будет делать JOIN с FEDERATED-таблицой на другом сервере для проверки прав.

ejabberd 2.1.5 пользует erlang'овский(?) odbc, так что проблем с доступом к базе быть не должно, а вот за то как он держит нагрузку не скажу, подозреваю что хренова ):

Skolotovich ★★★
()

Для авторизации я использую внешний php-скрипт

А расскажи, что ты делаешь. И как именно скрипт прикручет к еябберду? Алсо почему не подошло лдап?

Kalashnikov ★★★
()
Ответ на: комментарий от Kalashnikov

А расскажи, что ты делаешь. И как именно скрипт прикручет к еябберду? Алсо почему не подошло лдап?

{auth_method, external}.[br]{extauth_program, "/usr/bin/php /etc/ejabberd/ejabberd_auth.php"}.[br]



Делаю внешний чатик для одной игрушки. Авторизация пользователя должна проверяться через одну БД, а имеющиеся у него права на выполнение кастомных команд - через другую (это нормально, так и задумано).

drull ★☆☆☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.