Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > отделение файловой системы от структуры сайта


Автор: bars80080 22.9.2009, 13:40
сразу говорю, что вопрос несколько бестолковый

под файловой системой понимаю физическое распределение файлов на сервере по директориям
под структурой - систему url адресов, ведущих на разные страницы

в случае со статическим сайтом, там всё понятно, делаем папку directory, в неё кладём файлы page1.html, page2.html и т.д. и получаем адреса directory/page1.html , directory/page2.html

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

у меня есть старый движок неких товарищей, так они валили все файлы (причём даже чисто html-страницы там тоже имели расширение .php) в один каталог. получилась настоящая свалка, в которой приходится часто искать где же этот скрипт

рассуждая пальцами по клаве, как-то пришёл к варианту, где подчинённые страницы находятся внутри модуля (папки), который служит их "градообразующим предприятием". то есть почти статический вариант, за исключением того, что все файлы сидят вне видимости из сети, соответствующим образом инклудятся, а также в папке модуля располагаются прочие подсобные файлы (шаблоны, библиотеки классов и прочая). в этой системе, при перемещении модуля из одного раздела сайта в другой, происходит физическое перемещение всей директории (путём rename). что мне не сильно нравится, хотелось бы всё-таки иметь более независимую от структуры сайта файловую систему.

вот собственно вопрос, насколько сильно вы считаете их стоит разделить, и/или какая система кажется на ваш взгляд удобней?

Автор: Ипатьев 22.9.2009, 13:47
нормальный вариант, учитывая его исчезающую редкость.
вот я бы лично, учитывая частоту, с которой встречаются подобные задачи, ни за что бы не стал задумываться об обобщенном решении для них.

Автор: bars80080 22.9.2009, 14:41
Цитата(Ипатьев @  22.9.2009,  13:47 Найти цитируемый пост)
учитывая его исчезающую редкость.

а как не редко?


Цитата(Ипатьев @  22.9.2009,  13:47 Найти цитируемый пост)
ни за что бы не стал задумываться об обобщенном решении для них

а тут и не универсальная задача, а вполне конкретная. сайт похож на дерево разделы-подразделы-страницы, n-го порядка

иметь всё в одной папке - сущий бардак
противоположный вариант озвучивал главнокомандующий, он предлагал ориентировку оставить серверу, пусть он сам находит нужный файл, а в файле уже прописывать <?php include('initialization.php'); ?>. но, ИМХО, бред, и абсолютно не гибко


Цитата(Ипатьев @  22.9.2009,  13:47 Найти цитируемый пост)
учитывая частоту, с которой встречаются подобные задачи, ни за что бы не стал задумываться об обобщенном решении для них. 

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

Автор: Ипатьев 22.9.2009, 14:57
Цитата(bars80080 @  22.9.2009,  14:41 Найти цитируемый пост)
а как не редко?

обычно данные лежат в базе, а не на диске, мне кажется.

Цитата(bars80080 @  22.9.2009,  14:41 Найти цитируемый пост)
а тут и не универсальная задача, а вполне конкретная. сайт похож на дерево разделы-подразделы-страницы, n-го порядка

я так понял, что задача не "сайт похож на дерево", а "при перемещении модуля из одного раздела сайта в другой, происходит физическое перемещение всей директории (путём rename).".
как часто происходят такие перемещения, чтобы задумываться над глобальным решением этой задачи?

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

Автор: bars80080 22.9.2009, 15:12
Цитата(Ипатьев @  22.9.2009,  14:57 Найти цитируемый пост)
обычно данные лежат в базе, а не на диске, мне кажется.

не, я не говорю про такую частность, как содержимое новостей. для меня это один модуль - новостной, то что он там показывает в структуру не входит, даже если url адрес существует в виде news/article-about-php специально для каждой новости

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

Цитата(Ипатьев @  22.9.2009,  14:57 Найти цитируемый пост)
как часто происходят такие перемещения, чтобы задумываться над глобальным решением этой задачи?

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

Цитата(Ипатьев @  22.9.2009,  14:57 Найти цитируемый пост)
речь вообще о чем? о размещении статических страниц в каталогах или о структуре расположения скриптов сайта?
я так понял, что речь о первом. 

не, о втором. скрипты в данном случае выступаю почти независимыми единицами. физически - это папоча с файлом script.php и дополнительными файлами: шаблоны и библиотеки. плюс вложенные модули
статические страницы тоже могут быть представленны в виде физических страничек page.html и лежать внутри папки модуля, если по этим страницам не планируется ничего больше, кроме как вставка их содержимого в общий документ. ведь если не планируется никакого поиска или выполнения чего бы то ни было, то смысл их запихивать в базу?

Автор: skyboy 22.9.2009, 15:19
Цитата(Ипатьев @  22.9.2009,  13:57 Найти цитируемый пост)
какой еще главнокомандующий?

видать, вспоминает http://forum.vingrad.ru/users/Feldmarschall

Автор: Ипатьев 22.9.2009, 15:21
Цитата(bars80080 @  22.9.2009,  15:12 Найти цитируемый пост)
не, о втором.

тогда я вообще не понял, в чем вопрос.
есть структура сайта. она лежит в XML или в БД.
в этой структуре есть привязка "уровень меню - путь на диске".
все перетасовки в меню делаются исключительно в этом XML.
зачем что-то двигать на самом диске - я не понимаю.

Автор: Simpliest 22.9.2009, 16:58
Цитата(Ипатьев @  22.9.2009,  15:21 Найти цитируемый пост)
зачем что-то двигать на самом диске - я не понимаю. 

Я так понял его не устраивают сотни и тысячи файлов скриптов которые лежат в одном каталоге, причем возможно с ресурсами (картинки, яваскрипт и прочее).

Автор: Ипатьев 22.9.2009, 17:02
Я так тоже подумал сначала, но, судя по всему, эти файлы послужили только толчком к размышлениям и для сбивания с толку собеседников.
А размышления - о структуре расположения файлов проекта на диске. Нормального проекта.

Добавлено через 4 минуты и 56 секунд
Он говорит о том, что папка feedback лежит в папке hotel_service
И что если эту папку переместить...

А я говорю - а с чего это вдруг мне понадобится эту папку перемещать?

Автор: bars80080 22.9.2009, 17:53
Цитата(Ипатьев @  22.9.2009,  17:02 Найти цитируемый пост)
Он говорит о том, что папка feedback лежит в папке hotel_service
И что если эту папку переместить...

если папка feedback лежит в папке hotel_service, и при перемещении в структуре модуля feedback, не переместить физически папку feedback, то может возникнуть ситуация, когда hotel_service будет удалён, а вместе с ним и весь внутряк, хотя feedback должен продолжать работать


Цитата(Simpliest @  22.9.2009,  16:58 Найти цитируемый пост)
 так понял его не устраивают сотни и тысячи файлов скриптов которые лежат в одном каталоге

очень не устраивает. настолько не устраивает, что выкидываю эту идею сразу

правда, они не лежат с картинками, скриптами, стилями и прочим медиа в одном каталоге

Автор: Simpliest 22.9.2009, 18:01
Цитата(bars80080 @  22.9.2009,  17:53 Найти цитируемый пост)
хотя feedback должен продолжать работать

Если feedback лежит внутри hotel_service , то это значит только одно - ни в каком другом месте оно работать не будет.

Если тебе нужен feedback как независимая часть, то так его и реализуй. 
Отслеживай зависимости и используй модули как сервисы.
Т.е. ему должно быть глубоко безразлично кто его вызывает, если вызов соответствует API.

Зачем ты его клал в hotel_service?
Там может лежать, скажем, hotel_feedback, который наследуется от feedback.


Автор: Ипатьев 22.9.2009, 19:01
По-моему, это надуманная проблема. 
Simpliest прав - если фидбэк нужен везде, то почему он лежит в сервисе? 
если сервис перемещается со всеми файлами, то почему куда-то должен пропасть фидбэк?

Я бы сделал просто каталог для модулей. В которых все модули равноправны. А иерархию выстраивал в БД.

Автор: bars80080 22.9.2009, 19:15
Цитата(Simpliest @  22.9.2009,  18:01 Найти цитируемый пост)
Если feedback лежит внутри hotel_service , то это значит только одно - ни в каком другом месте оно работать не будет
почему? очень даже будет. не очень давно запихал почти целый сайт в качестве одного из модулей. вообще ничего не пришлось переписывать
Цитата(Ипатьев @  22.9.2009,  19:01 Найти цитируемый пост)
если фидбэк нужен везде, то почему он лежит в сервисе? 

в данном случае, он нужен только в сервисе, потому там и оказался

Цитата(Simpliest @  22.9.2009,  18:01 Найти цитируемый пост)
Зачем ты его клал в hotel_service?

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

Цитата(Ипатьев @  22.9.2009,  19:01 Найти цитируемый пост)
если сервис перемещается со всеми файлами, то почему куда-то должен пропасть фидбэк?

я написал: если сервис удаляется. он удаляется и из БД, и с диска. рекурсивно сносится вся директория модуля

Автор: Simpliest 22.9.2009, 20:12
Цитата(bars80080 @  22.9.2009,  19:15 Найти цитируемый пост)
в один ряд сотню модулей класть не хочется

Библиотеки и Иерархия.

Больше тебе ничего не поможет

Автор: Ипатьев 22.9.2009, 20:21
Цитата(bars80080 @  22.9.2009,  19:15 Найти цитируемый пост)
в один ряд сотню модулей класть не хочется

речь о сайте, с которого начался разговор?

Автор: bars80080 22.9.2009, 20:29
Цитата(Ипатьев @  22.9.2009,  20:21 Найти цитируемый пост)
речь о сайте, с которого начался разговор? 

ага. уже сейчас всего в четырёх разделах около 20 модулей, а работа только начинается. если это всё выкладывать в рядок, то получится тот сайт, который я хочу казнить, именно из-за бардачной системы построения

Автор: Ипатьев 22.9.2009, 20:31
не вижу никакой проблемы.
скорее всего, эти "модули" просто дублируют друг друга.
то есть, либо полный рефакторинг, либо плюнуть и оставить, как есть.

Автор: bars80080 23.9.2009, 00:06
нет, ничего не дублирует. но видно, оставить как есть придётся

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)