Symfony 2.0 – быстрый тур – общая картинка (часть 1)

Обновление от Августа 2016: перевод документации Symfony 2 на русский опубликован в виде бесплатной книги на сайте Leanpub. Узнать подробности.

Вы хотите попробовать новинку в области web-разработки — symfony 2.0, но имеете на это 10 минуток или что-то около того? Этот курс молодого бойца написан специально для вас. Он рассказывает о том как быстро начать работать с symfony 2.0 и показывает структуру простого проекта. Если вы когда-нибудь использовали какой-либо веб-фреймворк прежде, вы будете чувствовать себя в symfony 2.0 как дома.

Continue reading

Doctrine + memcached: использование и тестирование

Doctrine ORM имеет встроенный кэш-менеджер, который умеет кэшировать в

  • Memcached
  • APC
  • DataBase (видимо имеется в виду некая плоская БД с быстрым доступом, типа SQLite)

Узнав сей факт решил воспользоваться встроенным механизмом и протестировать механизм кэширования.

Continue reading

Разворачиваем symfony в document root

Не все web-проекты в этом мире – это крупные и высоко нагруженные системы. Есть также огромное число мелких и средних проектов. Давайте немного взглянем на последние. То что они небольшие и типовые – не значит что для них нельзя использовать symfony. Даже нужно, если у вас на поддержке 20 штук таких – будет проще обслуживать.

Итак, имеем маленький/средний сайтик на symfony. Здорово, но на нашем хостинге мы имеем доступ только в document root сервера! Это не беда, symfony достаточно гибок для того чтобы развернуть его в таких условиях. Ниже я приведу два способа.

Continue reading

Асинхронный пул на jQuery

Приведенный ниже скрипт имеет скорее теоретический нежели практический интерес.

Итак, постановка задачи:

  • Есть скрипт получения некоего набора данных (JSON).
  • Требуется на основе этого набора данных циклически вызывать асинхронный запрос, который выполняет действия на основе входных данных от первого скрипта.
  • При этом требуется лимитировать число одновременно запущенных асинхронных процессов (чтобы не порождать десятки или даже сотни запросов сразу).

Алгоритм решения:

  • Получить JSON с данными для последующей обработки.
  • Для каждого элемента в полученных данных:
  • — Если пул не заполнен – запустить асинхронный процесс.
  • — Если пул заполнен – ждать пока в пуле освободится слот.
  • По окончанию обработки данных очистить пул.

Проблема:

  • Если организовывать опрос пула циклически, съедается 100% одного ядра CPU, начинает дико тормозить интернет-обозреватель и в конце концов может аварийно завершить работу.

Как можно реализовать скрипт для данной задачи – смотрите ниже:

Continue reading

Ошибка в настройке sfDoctrineGuard – remember_me фильтр

Давно не работал sfGuard, и вот возникла такая необходимость. Поскольку используется Doctrine, поставил sfDoctrineGuard. Пробежался по мануалу, настроил myUser, доступные модули, пересобрал модель. Все как сказано в документации. Однако, после подключения фильтра remember_me, начались чудеса. Фронтэнд начал падать с ошибкой

500 | Internal Server Error | sfException
Call to undefined method myUser::isAnonymous

Метод в наличии есть, myUser наследуется от sfGuardSecurityUser. Все на месте. И тем не менее.

Ларчик конечно открывался довольно просто:

Continue reading

Оптимизация работы с Doctrine при помощи специализированных запросов

Если вы работаете над большим проектом на symfony + Doctrine и у вас много моделей и сложных запросов, вам обязательно потребуется способ, как хранить и использовать эти запросы, не теряя преимуществ ООП и более прямым способом, нежели традиционные способы addNamedQuery() и createNamedQuery(). Ниже приводится такой способ.

Continue reading