А это клавиатура, с помощью которой я творю...
http://kurepin.ru/php/day/begin/
Rambler's Top100
PHP-2. Вступление и начало планирования

Я знаю, что кто-то сейчас захлопает в ладоши, а кто-то скуксится, но не могу не признаться — я готов написать очередной курс обучения web-программированию.

Признаться, меня до сих пор поражает популярность моего старинного курса по PHP, который уже дано не актуален, но который с остервенением жадных коршунов растаскивают по своим сайтам и коллекциям создатели web-сайтов, посвященных программированию вообще и программированию на PHP в частности.

Еще раз хочу сказать спасибо всем, кто нашел в моих пусульках что-то полезное для своего развития, на чем заканчиваю все реверансы и становлюсь прежним Русланом Курепиным (aka Atos), — злым, нервным и жестоким преподавателем web-правды.

Вводная часть.

Если раньше я писал больше о приемах программирования, то в этом курсе я буду больше уделять внимания алгоритмизации процесса построения сайта. Как обычно, на простых примерах мы разберем весь (если у меня хватит запала) процесс создания интернет-проекта.

Я не исключаю из курса фрагменты кода, но не обещаю, что буду кодировать все, о чем буду писать. К кодингу скорее буду прибегать только для раскраски примеров, демонстрации "хитрых" приемов и тому подобного.

Теперь о проекте.

В качестве примера для нашего курса возьмем сайт caricatura.ru. Почему именно карикатура? Очень просто. Этот сайт прошел путь от полностью динамической версии до почти полностью статической, рассчитанной на высокую посещаемость (более 100.000 посещений в сутки). Об этом и поговорим.

Поскольку caricatura.ru написан на PHP, бедем считать этот язык базовым при создании проекта; мне так будет проще. Некоторые любят меня упрекать в том, то на Perl, скажем, писать — правильнее. Не буду с этим спорить, тем более, что на Perl я писал, и довольно долго. Но на C писать — еще правильнее, но гораздо дольше, чем на Perl. Для меня, во всяком случае. А на PHP мне пишется намного быстрее, чем на Perl, поэтому я и выбрал для себя этот язык за основной, при написании web-проектов. У PHP есть ряд значительных недостатков, но он и не лишен достоинств. И то и другое я обсуждать не намерен, а намерен приступить к делу.

Поехали!

Кто сочтет следующий абзац незначительным и малоинтересным, могут дальше не читать этот курс.

На мой взгляд, самое важное в создании web-проекта — планирование. Да-да, планирование всего, что можно спланировать. Сегодняшняя версия сайта (v.2.0) написана буквально за два дня. Но планы в голове и на бумаге я вынашивал не менее месяца, пока вся структура и все возможности сайта не сложились для меня в непоколебимую единую конструкцию.


Поговорим о планировании.

Планирование можно разделить на любое удобное количество этапов. Я предлагаю для начала ответить на следующие вопросы:

1. Каков будет тип контента (информационной составляющей) сайта?

2. Какую посещаемость сайт должен выдерживать, не убивая сервер хостинга?

3. Какие возможности и средства мы можем использовать? Или, другими словами, какими инструментами на ограничивает хостинг проекта?

4. Кто и как будет управлять нашим сайтом?

Отвечаю на эти вопросы:

1. Контент caricatura.ru состоит из графических изображений и краткой текстовой информации, сопровождающей эти изображения. Кроме того, потребуется хранить и обрабатывать информацию для народного голосования (оценка, IP проголосовавшего, даты и другие технические данные).

2. Сайт должен без проблем выдерживать более 100.000 посещений в сутки, не сильно напрягая сервер.

3. У меня собственный хостинг, поэтому использовать можно любые средства, языки и инструменты.

4. Управлять будут специально приглашенные специалисты, которые будут размещать новые поступления. Все остальное управление будет находиться в моих руках и в руках моих любимых роботов (скриптов).

Ответив на эти вопросы, можно сделать уже некоторые выводы. А именно:

1. Очевидно, что преобразования будут необходимы скорее для текстовых и технических полей (выборки по голосованию, модификация описания графики и комментарии к работам), чем для самой графики. Поэтому будет разумно хранить данные в sql-базе, а саму графику просто кладем на диск, чтобы apache мог отдавать ее напрямую, не загружая компьютер какими-то дополнительными действиями.

2. Поскольку мы ориентируем сайт на высокую посещаемость, будет логично содержать видимую (пользовательскую) часть сайта в простых html-файлах. То есть, постараемся использовать минимум скриптов для отображения контента. И уж конечно, не будем зависеть от mysql-сервера при демонстрации карикатур и при любом другом выводе данных.

3. В качестве средств для реализации проекта я предлагаю выбирать из самого быстрого и самого популярного, дабы иметь возможность потенциального переезда на чужой и/или коммерческий хостинг: apache в качестве web-сервера, MySQL в качестве базы данных, html с поддержкой SSI для пользовательской части сайта и PHP для написания управляющих скриптов.

4. Сайт обязательно должен иметь backoffice — web-программу для управления сайтом: верстка страниц, добавление информации, ее корректировка и т.п.

Как видите, ответы на довольно простые возможности уже дали нам немало конкретики, на которую уже можно как-то опереться.

Что дальше? А дальше мы будем продолжать планировать. Если мы все спланируем заранее, нам не придется в процессе изготовления сайта ломать голову над логическими задачами и по несколько раз переделывать фрагменты кода. Я потому и назвал этот курс "сайт за месяц и один день", что планирование может занять месяц, а реализации при этом может состояться за один-два дня.

Ответы на первую группу вопросов позволяют нам распланировать дисковое пространство для расположения рабочих файлов. У меня уже сложились некоторые привычки в этом процессе, которыми я быстренько с вами поделюсь. Прежде всего, надо определить, какие файлы будут видны пользователю, а какие — нет. Исходя из этого можно смело разбивать хранилище файлов на два уровня: видимый для посетителя и недоступный последнему.

/opt/www/caricatura.ru — пусть это будет корневой директорией для нашего проекта.

./www — в этой папке будем хранить отображаемую часть сайта. Именно эта папка должна быть указана в конфигурационном файле apache в качестве корневой для нашего сайта.

./blank — в этой папке пусть лежат фрагменты html-кода, из которого мы будем собирать отображаемые страницы.

./req — в эту папку положим наши скрипты на php.

./data — сюда свалим всевозможные данные, формирующиеся в процессе работы (я еще не знаю, что это будет)

./utils — а в этой папке будут храниться различные утилиты, которые мы будем запускать из командной строки или из cron-а.

./flag — чуть не забыл. При статической верстке нам обязательно понадобится место для создания файлов-флагов. Позже вы поймете, как это важно для сайтов со статической версткой.

Вроде все. Так будет выглядеть базовая структура нашего проекта. Разумеется, в каждой из перечисленных директорий будут другие папки, это неизбежно. Но мы всегда будем знать, где начинать поиск нужных нам данных.

Папка ./www будет содержать самую глубокую и сложную структуру, это очевидно, поэтому зададим для нее отдельно свою базовую подструктуру:

./www/img — служебная графика (элементы дизайна)

./www/inc — файлы для включения в другие страницы (заголовок, подвал и т.п.)

./www/forum — сюда положим какой-нибудь удобный и популярный форум

Пожалуй, достаточно для структуры www-директории.

Усваивайте материал. До следующего выпуска!

21.09.03

[шаг назад] [печатать] [в начало сайта]



copyright ©2000-2017 Ruslan Kurepin