Если вы хотите сделать это самостоятельно; хранить каждый пост в виде файла в каталоге. Затем для сортировки и ограничения сообщений вы частично полагаетесь на имена файлов, чтобы упорядочивать и ограничивать их, и, возможно, (в случае поиска) при чтении каждого последнего файла. Не позволяйте пользователям делать 10 000 сообщений. Но да, выше считается формат данных плоских файлов. Вы можете получить фантазию, используя стандартный формат, такой как JSON, Yaml или XML, в каждом почтовом файле, и даже более изобретательно, запрашивая их с помощью вызовов Ajax в основном на стороне клиента.
Теперь, если причина, по которой вы хотите работать с плоскими файлами, заключается в том, что вы просто не хотите устанавливать сервер базы данных, ничто не мешает вам прочитать локальный (для сервера) файл как БД Berkley, индекс Lucene или БД SQLite из вашего веб-приложения, используя соответствующую клиентскую библиотеку. Вы найдете, что любой из этих подходов немного более вменяемый (немного быстрее, немного более читабельный в коде), чем вышеупомянутый, с теми же требованиями для установки на сервере (разрешения на чтение и запись в файл). Многие веб-фреймворки или языки (например, php) поставляются с возможностью API для этих клиентских библиотек; SQLite, и Люси (C Lucene), в частности.
Если вы просто ищете примеры того, как это делается, я сначала (думаю, 1999 или 2000) наткнулся на blosxom , который представляет собой Perl-скрипт, который запускается либо как скрипт cgi для запроса, либо как Cron работа. Он строит устаревший индекс «постов» на основе того, что вы выбросили в каталог, который он должен сканировать. Он также создает RSS-канал.