import os msgs = os.listdir('msg') for h in msgs: if os.path.getsize('msg/%s' % h) == 0: os.remove('msg/%s' % h) msgs.remove(h) echoes = os.listdir('echo') for ea in echoes: passed = [] echo = open('echo/%s' % ea).read().splitlines() for h in echo: if h in msgs: msgs.remove(h) passed.append(h) if passed != echo: passed = passed + [''] or [] open('echo/%s' % ea,'w').write('\n'.join(passed)) for h in msgs: os.remove('msg/%s' % h)
ребилдит базу - удаляет левые записи и дубли, удаляет сообщения, которых нет ни в одной эхе (в файле эх, если просто отписались от эхи, ничего не удалится), удаляет сообщения с размером 0, которые у меня откуда-то плодятся...
использовать с осторожностью! сначала чекером прогнать с записью в лог. затем заархивировать базу. и только потом запускать фиксер!
но по хорошему, кто-то, кто php языки говорит, нужно, чтобы переписал php-ноду. точнее, тот момент, где оно записывает сообщение в базу - чтобы левое сообщение там не могло пройти, только то, что стандарт прописал :)