Pull to refresh

Comments 31

велосипед #100500 «Подготовка салатов из логики и представления методом смешивания без применения миксера». как-то так :-)
Вы правы в том, что я не вижу смысла заменять логику с пхп на нечто, что в конечном итоге будет все равно преобразовано в тот же пхп )) По-моему, пхп достаточно прост для верстальщиков, не встречал верстальщиков с таким барьером.
И рано или поздно в шаблоне кто-нибудь напишет mysql_query()…
Шаблоны сайта, также как и доступ к фтп, это не место для кого-нибудь.
На мой взгляд — для пхп разделение хтмл-верстки и пхп-кода надумана. В силу простоты языка пхп. Личный опыт работы в индустрии подтверждает это.
Это не место для кого-нибудь пока им пользуюсь я один.
Хотя меня и самого частенько разрывает желание сделать «попроще»: написать там css в html-е ну или там какие-нибудь данные получить в шаблоне пока никто не видит.
И вот если мне это удается, я, конечно, себе говорю: «вот щас клиенту покажу, и потом нормально перенесу в нужное место». Как правило это вот «потом» не наступает никогда.
Ну а так как в студии работаю ни я один — то количество таких вставок растет геометрически. И рано или поздно это все превращается в один большой комок лапши, в котором уже непонятно какой файл нужно править если я хочу изменить количество новостей на странице.
Архитектура приложения должна жестко задавать поведение разработки. Если что-то можно написать не там — это будет написано не там.
Я 7 лет руководил разработкой сайтов, с такой проблемой у себя не сталкивался. Возможно дело в организации процесса.
а сложные системы писали? или простые сайты странички?
Сложные — да, в том числе сиэрэм системы. С нагрузкой не более 4 запросов в секунду.
$fp = fopen($end, "w+")


За такое надо по рукам бить.
Видимо это намёк на file_put_contents
Хм… ну тогда и мне тоже поясните что-ли :)
Открытие файла на запись в режиме «w+» я считаю в корне неправильным.
Если вы имели дело с большими нагрузками, то должны знать, что в такие fopen'ы может одновременно влезть несколько запросов.

Следует писать
$fp = fopen($end, "a+");
flock($fp, LOCK_EX); // блокируем файл
// делаем все нужные операции
flock($fp, LOCK_UN); // снимаем блокировку файла
Ясно. В своей практике вы сталкивались с таким конфузом. Объявите тогда и обстоятельства подобного случая. Что вы подразумеваете под большими нагрузками?

У меня были странички с посещениями 4 в секунду, при том что страничка перезаписывала 300 новых страниц, по указанной в статье схеме. Проблем не замечено.
Представьте ситуацию. Пользователи u1 и u2 выполняют запрос с разницей во времени 0.01сек, что намного меньше времени работы скрипта. Пользователь u1 очищает файл модификатором w+, пишет в него данные. Делает «еще что-то». В то время, как u1 делает «еще что-то», в этот процесс вклинивается u2, стирает файл, а это время u1 запрашивает его для отображения. Что увидит u1, думаю не секрет…
С теорией согласен. У вас реально были подобные случаи, ошибки?

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

а чем smarty со своим наследованием шаблонов не подошел?
UFO just landed and posted this here
UFO just landed and posted this here
Погуглите на тему Layouts, Views, View model. Тот же Zend_View в качестве примера или Symfony. Идея использовать PHP в качестве шаблонизатора — хорошая (по скорости), но сейчас реализуют её совершенно по другому. Разделяйте мух от котлет, логику от представления, интерфейс от реализации.
Из придирок:

if ( !empty(load::$path[0]) ) — антипаттерн Magic Numbers, как минимум надо писать load::isIndex()
На кой Вам определять OS когда есть константы PATH_SEPARATOR и DIRECTORY_SEPARATOR?
Спасибо за замечание.
Код реально 2003-2004 года, видимо тогда PATH_SEPARATOR не увидел.
А какой смысл это выкладывать в 2011-м? Тем паче, что проблемы кода гораздо серьезнее, чем мои мелкие придирки (читайте дискуссии выше).
В 2011 все также просто и прекрасно работает.
Это Ваше мнение. Пусть так.
Увидел расширение *.tpl, думал что-то интересное про Smarty, а тут — аля «изобретаем Smarty, ни разу его не видя» :))
С баша: изобрели терагерцовый процессор. Ура, можно писать еще больше говнокода!
Не обижайтесь, но изобретение велосипеда из костылей — не самая лучшая идея. Может посмотреть другие проекты, изучить код и логику, а потом уже изобретать что то по-настоящему полезное?
Sign up to leave a comment.

Articles