Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #76, АПРЕЛЬ 2005 г.

Препарируем RSS

Никита Кислицин

Хакер, номер #076, стр. 076-120-3


Сейчас мы с тобой займемся тем, что напишем свое собственное web-приложение на PHP, которое будет экспортировать данные в RSS.

Перейдем к конкретике

Совсем недавно я получил трогательное письмо из одного города в западной Сибири, где живет Василий Григорьевич – пенсионер, который бросил десять лет назад курить, делает зарядку по утрам, воспитывает внуков, однако в столь преклонном возрасте он решил не жить на скромную пенсию, а занялся бизнесом - разведением уругвайских тушканов, спрос на которых непреклонно растет. В определенный момент Василий Григорьевич понял, что большая часть его покупателей активно пользуется инетом и надо предоставить ей возможность следить за жизнью питомцев, давать рекомендации по Сети, ну и вообще, осуществлять электронную поддержку. Внук сделал ему сайт, однако некоторые клиенты сказали, что им было бы удобно следить за новостями, если бы они распространялись в RSS.

Поскольку внучек ничего об этом не знал, Василий Григорьевич попросил меня о помощи и я не смог отказать дедушке. Сейчас мы напишем крутой RSS-блог, в котором будут постится новости из жизни питомцев Василия Григорьевича.

Архитектура блога

Да ну, какая тут архитектура. Все просто. В базе данных mySQL есть таблица rssblog, которая имеет следующую структуру:

CREATE TABLE rssblog (pid int not null primary key auto_increment, pubDate date, title text, descr text);

Соответственно, в этой табличке хранятся посты, которые нам надо выводить в RSS-ленту. Написать скрипт, который будет добавлять новости в таблицу – это элементарно и мы с тобой это уже не раз проворачивали. Так что я сегодня более подробно расскажу об экспорте данных.

Собственно, все очень просто. Скачала элементарным запросом мы выбираем десять последних записей, сортируя их по времени публикации, а затем в цикле по всем возвращенным строкам начинаем строить RSS-документ, жестко следуя описанному формату. В результате несложно получить примерно такую вот функцию:

Процедура, строящая RSS-ленту

function BuildRss($title, $link, $desc) {

$re=mysql_query(“select * from rssblog order by pid desc limit 100”);

echo “<?xml version=\"1.0\" encoding=\"windows-1251\" ?>\n”;

echo “<rss version=\"2.0\">

<channel>

<title>$title</title> # Заголовок ленты

<link>$link</link> # Ссылка на сайт

<description>$desc</description>”; # Описание ленты

while($res=mysql_fetch_array($re)) { # Цикл по всем нужным записям в таблице

echo “

<item> # Новый пост

<title>$res[title]</title> # Заголовок

<link>$res[link]</link> # Ссылка

<description>$res[descк]</description> # Описание

<pubDate>$res[pubDate]</pubDate> # Дата публикации

<guid>$link/content.php?pid=$$res[pid]</guid> # Идентификатор

</item>”;

}

echo “</channel>

</rss>”;

}

Теперь если сохранить эту процедуру в php-скрипте и выполнить ее на сервере, клиенту вернется RSS-документ, который удобнее всего просматривать при помощи специальной программы вроде ActiveRefresh. На скрине ты можешь видеть, каким образом отображаются новости в клиентском софте, да и сам можешь легко это попробовать: адрес ленты http://ired.inins.ru/rss.php.

Назад на стр. 076-120-2  Содержание  Вперед на стр. 076-120-4