Блог Вячеслава Волкова

Тому, что действительно нужно знать, никто не научит.

— Оскар Уайльд

Тег / Symfony

Ошибка «upstream sent too big header» при установке xdebug в symfony 2

После установки xdebug и запуске DEV environment в Symfony 2 можно получить ошибку Bad Gateway. В логах nginx можно найти следующую ошибку:
upstream sent too big header while reading response header from upstream

Для ее исправления необходимо увеличить параметры в конфигурации виртуального хоста Nginx.
fastcgi_buffer_size 32k;
fastcgi_buffers 4 32k;

В итоге получаем вот такой конфиг:
location ~ ^/(app|app_dev|config)\.php(/|$) {
          fastcgi_buffer_size 32k;
          fastcgi_buffers 4 32k;
          fastcgi_pass    unix:/tmp/site.sock;
          fastcgi_split_path_info ^(.+\.php)(/.*)$;
          include fastcgi_params;
          fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
          fastcgi_param  HTTPS off;
        }

Создание Doctrine YAML через MySQL Workbench

Недавно стал пользоваться программой MySQL Workbench. Приложение меня очень порадовало, в нем очень удобно проектировать структуру базы данных, которую затем можно легко экспортировать на сервер Баз Данных (Forward Engineering). Так же можно использовать обратную разработку (Reverse Engineering): создание ER диаграммы по существующей структуре Базы Данных. Кроме того, в приложении есть синхронизация модели и существующей БД, что тоже очень удобно при разработке.

Но так как мы разрабатываем наши продукты с использованием ORM Doctrine, то кроме структуры БД необходимо было создать модели для доступа к данным. И тут я вспомнил, что один хороший человек, как-то говорил, что для Workbench есть дополнение, которое создает Doctrine YAML сразу из приложения. Немного поискав в инете, плагин был успешно найден. Страница разработчика находится вот здесь.

Используя данный плагин очень удобно и быстро можно создавать схемы для будущих моделей.
Узнать больше »

Склонение чисел, реализация на PHP

Все программисты порой сталкиваются с проблемой, когда необходимо добавить нужное окончание к слову, в зависимости от его числового значения. Например, ситуация с отзывами на сайте. Бывает "1 отзыв", "2 отзыва" и "12 отзывов".
С такой же проблемой столкнулся я сегодня, и нашел вот такую удобную функцию, которую реализовал как хелпер для Symfony. Назвал его "numberEndHelper.php" и разместил в каталоге для хелперов.

Это небольшая, но очень мощная функция для склонения слов-чисел, в данном случае — выставление правильных окончаний у существительных относящихся к числительному
function NumberEnd($number, $titles) {
	$cases = array (2, 0, 1, 1, 1, 2);
   	return $titles[ ($number%100>4 && $number%100<20)? 2 : $cases[min($number%10, 5)] ];
}

И теперь можно ее использовать. Для вызова нужного хелпера Symfony используется метод
 use_helper('NumberEnd');
 $a = 21;
 echo $a.' отзыв'.NumberEnd($a, array('','а','ов'));

В итоге мы получим "21 отзыв".