14 декабря 2011 г.

очистка истории сообщений в openfire

Предупреждаю сразу - сам еще не попробовал, надо дождаться выходных, когда люди спать будут :)

Вобщем всем хорош модуль Monitoring в openfire, но есть один боооольшой недостаток, нет возможности в WEB интерфейсе почистить историю сообщений. Тупо хранит все.
У друзей возникла задача, оставлять только свежие сообщения. Т.е. удалять все, что древнее одного месяца.
Полазив по базе openfire обнаружил табличку:

mysql> describe ofMessageArchive;
+----------------+--------------+------+-----+---------+-------+
| Field          | Type         | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+-------+
| conversationID | bigint(20)   | NO   | MUL | NULL    |       |
| fromJID        | varchar(255) | NO   |     | NULL    |       |
| toJID          | varchar(255) | NO   |     | NULL    |       |
| sentDate       | bigint(20)   | NO   |     | NULL    |       |
| body           | text         | YES  |     | NULL    |       |
+----------------+--------------+------+-----+---------+-------+
Как видно из таблицы, все будет крутиться вокруг sentDate.
В результате появилась вот такая вот командочка:

delete from ofMessageArchive where sentDate/1000 < unix_timestamp(now())-2629743

По идее должно почистить табличку.
Погуглив по имени таблицы, нашел вот это: http://community.igniterealtime.org/docs/DOC-2199
В выходные проверю.

2 комментария: