Slashdot? На PHP - халява!

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

Xakep, номер #051, стр. 051-086-1

(nikitoz@real.xakep.ru)

http://nikitos.inc.ru

Slashdot.org - популярный новостной портал с посещаемостью 50 млн. человек в месяц. Авторы проекта добились такого успеха, предоставляя пользователям свежие и интересные новости из мира IT, а также возможность оставлять под публикацией собственные комментарии. Это очень важное обстоятельство, поскольку со временем постоянные посетители любого такого проекта, выявляя общие интересы и привязываясь к месту общения, образуют единый социум. Ни e-mail, ни даже irc не могут им заменить такого ресурса, поскольку только здесь создана та неповторимая социо-информационная среда, от которой они просто тащатся. Отсюда и 50 миллионов посещений в месяц. Верный подход, хорошая реализация. К слову, насчет реализации - Slashdot написан на Perl. Мы же реализуем эту, в общем-то, несложную задачу, на PHP. Увидишь - это просто :).

Создание таблиц

Как я уже неоднократно отмечал, прежде чем приступать к написанию скриптов, надо продумать структуру информационной среды, в которой они будут работать. В нашем случае мы будем иметь дело с сервером баз данных mysql, а информация, стало быть, будет храниться в таблицах.

Таблица со статьями:

mysql> create table posts(

-> pid INT NOT NULL AUTO_INCREMENT PRIMARY KEY,

-> aid INT NOT NULL,

-> cid INT NOT NULL,

-> text TEXT NOT NULL,

-> date DATE NOT NULL,

-> time VARCHAR(15) NOT NULL,

-> timest INT NOT NULL);

Query OK, 0 rows affected (0.01 sec)

Pid - уникальный идентификатор статьи, aid - автора, cid - рубрики, text - текст статьи, date/time - время, timest - время по unix-исчислению.

Таблица с информацией об авторах:

mysql> create table authors(

-> aid INT NOT NULL AUTO_INCREMENT PRIMARY KEY,

-> fname VARCHAR(50) NOT NULL,

-> email VARCHAR(50) NOT NULL,

-> login VARCHAR(30) NOT NULL,

-> password VARCHAR(20) NOT NULL,

Query OK, 0 rows affected (0.01 sec)

aid - идентификатор автора, fname - его имя. Email - адрес электронной почты, login - логин для входа в административный интерфейс, password - пароль.

Таблица с комментариями:

mysql> create table comments(

-> coid INT NOT NULL AUTO_INCREMENT PRIMARY KEY,

-> pid INT NOT NULL,

-> aname VARCHAR(50) NOT NULL,

-> aemail VARCHAR(50) NOT NULL,

-> comment TEXT NOT NULL,

-> date DATE NOT NULL,

-> time VARCHAR(15) NOT NULL,

-> timest INT NOT NULL);

Query OK, 0 rows affected (0.01 sec)

Coid - идентификатор комментария, pid - идентификатор статьи, к которой относится комментарий, aname - имя автора комментария, comment - текст, date/time - время, timest - время по unix-исчислению.

Таблица с рубриками:

mysql> create table categories(

-> cid INT NOT NULL AUTO_INCREMENT PRIMARY KEY,

-> category VARCHAR(30) NOT NULL,

-> eids VARCHAR(50) NOT NULL);

Query OK, 0 rows affected (0.00 sec)

Cid - идентификатор рубрики, category - название рубрики, eids - идентификаторы редакторов рубрик.

Описание функций

Система будет представлять собой совокупность четырех скриптов:

Содержание  Вперед на стр. 051-086-2

ttfb: 3.0848979949951 ms