Приветствую, хабралюди и желающие.
Написание этого поста было вопросом времени, поэтому я не стал откладывать и решил написать сейчас.
Ранее я публиковал описание возможностей Fuelphp. На тот момент я как раз создал русский сайт документации, группу и написал с использованием этой халявы несколько тестовых приложений.
В этой статье я хочу поделиться своим опытом использования этого инструмента в реальном проекте.
Необходимо было создать удаленную админку и реализовать управление клиентскими сайтами через API. Требования: модульность, оптимизация под нагрузки, использование Youtube API, ЧПУ.
Далее я укажу конкретную задачу, а наоборот опишу, какие инструменты использовались и насколько эффективно: 1. Авторизация пользователей, в том числе через соцсети вк и фейсбук: Auth+oAuth+oAuth2: установил два недостающих пакета через масло, подключил их в конфиге, запустил миграцию через масло - после чего в базе данных были созданы необходимые признаки.
Все работало как часы, драйвера вк не было, написал за 10 минут. 2. Организация шаблонов: Я отказался от шаблонизаторов в пользу оптимизации.
Было две идеи, как лучше организовать шаблоны.
Первый заключался в том, чтобы определить «виджеты» в базовом контроллере и затем наследовать от него.
Второй — реализовать «виджеты» как отдельные модули и вставлять их с помощью HMVC-запроса.
Первый мне показался более простым и лаконичным решением, поскольку всем «виджетам» так или иначе нужны данные из базы, причем одни и те же.
Более того, эти данные можно было бы собрать в один большой кешированный запрос.
Не знаю, правильное ли я решение принял, но пока с проблемами не столкнулся, а кеширование запросов увеличило скорость почти в 10 раз.
3. Кириллица ЧПУ: 5 минут времени, это очень быстро.
урленкод() — урлдекод() 4. Генерация карты сайта: не обнаружено в стандартных пакетах.
Здесь в игру вступает красота упаковок.
Я набрал в Google что-то вроде sitemap gen php, нашел подходящий класс и через пять минут пакет Fuelsitemap у меня уже был.
Сделать пакеты в топливе проще простого; как только сделаешь хотя бы один, остановиться уже невозможно.
5. Реализация админки: здесь решено было поставить в приоритет скорость, так как бэкенд тот же) extjs4 был выбран в надежде на скорость разработки и надежность.
Воссоединились с Топливом как семья.
Однако я больше не буду использовать extJs4. Это трехметровый ящик с инструментами, в нем можно делать все, и если с ним постоянно работать, то это экономит время, и ты наконец-то вспоминаешь, что и где находится внутри него.
Сюда также входят обновления, которые часто могут нарушить обратную совместимость.
Представьте себе, что произойдет, если вы время от времени будете использовать extjs, не разбираясь достаточно хорошо в его внутреннем устройстве.
Хорошее решение для студии, где над пользовательским интерфейсом работают один или два человека.
6. API администратора: Fuelphp имеет несколько контроллеров, это обычный Controller, для реализации шаблонов Controller_Template (базовый шаблон назначается через переменную $template).
Чтобы вернуть xml, json, сериализацию и другие форматы, используйте Controller_Rest или Controller_Hibryd(Controller_Template+Controller_Rest).
Причём ничего дополнительно никуда писать не нужно, достаточно подставить .
json или .
serialize и т.д. Когда вы вызываете метод, он сам преобразует данные в нужный формат; внутри метода данные определяются как массив.
6.1 Безопасность API: Далее встал вопрос о мерах безопасности при передаче данных.
Во-первых, было решено использовать шифрование данных с помощью ключа, во-вторых, изменить метод запроса с get на post. В-третьих, входить в доступ по паролям, которые передавались в самих данных и в шапке сервера, естественно тоже зашифрованные ключом.
Для шифрования я использовал Crypt из Fuelphp, но для передачи данных и заголовков хотелось использовать CURL. Схема была стандартная гугловая -> выбор подходящей обертки -> изготовление пакета -> его использование.
7. Использование API Youtube: здесь помог созданный ранее пакет Fuelcurl (так я его назвал).
Эта задача в основном включала в себя логику, которая могла бы пригодиться в следующем проекте, поэтому мне не хотелось «жестко зашивать» это решение в методы контроллера.
И чтобы я мог легко и непринужденно использовать этот функционал в следующих проектах, был создан отдельный пакет Fuelyoutube. 8. Оптимизация: Сервер - нгинкс.
Код — Используя стандартные возможности, я кэшировал отдельные запросы в базу данных.
- Api Yotube - запрос к апи происходит один раз, далее он берётся из базы в виде кеша.
— Подключен файловый кэш.
Мне показалось достаточным использовать эти меры, по крайней мере на данном этапе.
Хотя я понимаю, что это далеко не предел оптимизации нагрузки.
Вся разработка заняла у меня две недели.
Примечания: — В результате получилось гибкое приложение, где почти вся более-менее повторно используемая логика вынесена в отдельные пакеты с целью повторного использования в будущих проектах.
Пакеты — это нечто постоянное и переносимое из проекта в проект. Вы делаете это один раз, и решение никогда не исчезает – это действительно потрясающе.
«Сами контролеры лишь осуществляют проверки и направляют действия.
— Большим преимуществом пакетов является то, что вы можете повторно использовать логику везде: в шаблоне, в контроллере, в модуле.
— За все время использования фриворка я несколько раз обновлял ядро — обратная совместимость не нарушалась, обновление сводилось к копипасту и замене папки ядра.
— Топливо настолько простое, насколько вы хотите, например, я не использую много юнит-тестов, нефтяной консоли, разделения разработки на разработку и производство, нефтяную миграцию и многое другое.
Но я знаю одно — когда они мне понадобятся, я легко смогу начать ими пользоваться, так как в Fuelphp нет ничего сложного.
На этом все, всем удачи и скорейшей реализации планов.
Выездной FuelPHP - Fuelphp.com FuelPHP на GitHub — github.com/топливо Тестируйте CMS на GitHub — github.com/samitimal/mod-cms Шпаргалка - www.novius-os.org/fuelphp-cheatsheet/index.htmЭutm_source=novli&utm_medium=novli&utm_campaign=fuelphp-cheatsheet Русская документация - Fuelphp-framework.ru Сообщество в ВКонтакте - vk.com/fuelphp Теги: #framework #Fuel #fuelphp #php 5.3 framework #framework #api youtube #api #php #OOP
-
Новый Агент Mail.ru Для Iphone
19 Oct, 24 -
Эпидемия В Данных
19 Oct, 24 -
История Дворняги
19 Oct, 24 -
Ну Какой Русский Не Мечтает Стать Шпионом?
19 Oct, 24