Nginx cache: всё новое — хорошо забытое старое

В жизни каждого проекта настает время, когда сервер перестает отвечать требованиям SLA и буквально начинает захлебываться количеством пришедшего трафика. После чего начинается долгий процесс поиска узких мест, тяжелых запросов, неправильно созданных индексов, не кэшированных данных, либо наоборот, слишком часто обновляемых данных в кэше и других темных сторон проекта.Но что делать, […]

Настройка кеширования в nginx

В nginx начаная с версии 0.7.44 появилась возможность кешировать отдаваемые страницы, что может увеличить работы сайта в тысячу раз. Рассмотрим практический пример настройки кеширования. За основу будет взят сайт контент которого не меняется в зависимости от пользователя (авторизован или гость) и нет активно меняющихся данных (например голосований). Это важно, т.к. […]

Nginx Reverse Proxy with Caching

nginx.conf http { proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=STATIC:10m inactive=24h max_size=1g; server { location / { proxy_pass http://1.2.3.4; proxy_set_header Host $host; proxy_buffering on; proxy_cache STATIC; proxy_cache_valid 200 1d; proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504; } } }

Switch by class (instanceof) in PHP

The following is more correct: $class = get_class($objectToTest); switch($class) { case TreeRequest::class: echo «tree request»; break; case GroundRequest::class: echo «ground request»; break; } This way namespaces are properly compared (you don’t have to type them out) and if anything changes such as the namespace or class name you’ll get a […]

Восемь причин изучить PHPDoc

Часто встречаю вопрос о том, что же это за странные блоки комментариев постоянно генерируются в представлениях: <?php <?php /* @var $this yii\web\View */ /* @var $searchModel \app\models\search\UserSearch */ /* @var $dataProvider yii\data\ActiveDataProvider */ ?> в ActiveRecord-классах: /** * This is the model class for table «{{%user}}». * * @property integer […]

Что такое Bounded Contexts и Context Maps в DDD

Одной из самых больших проблем, приближенной к теме Domain Driven Design является большое количество новых идей, моделей и терминов, которые необходимо понимать. Это часто может означать, что тема неприступна или подавляющая, потому что вы чувствуете, как вы тонете в большом количестве информации. Прошлый раз мы рассматривали Domain Model, что это […]

Ubiquitous Language и Bounded Context в DDD

Domain-Driven Design: Tackling Complexity in the Heart of Software Эванса — лучшая книга о проектировании действительно больших enterprise-приложений, что я читал. Видимо это мнение разделяют многие другие разработчики и проектировщики, потому что Entity и ValueObject, Repository и Specification встречаются почти в каждой большой кодовой базе. Но вот незадача, Ubiquitous Language […]

Заглушки Eloquent-отношений для быстрых тестов

Когда вы пишете тесты для модели Eloquent, зачастую нужен доступ непосредственно к базе данных, что бы проверить свой код в боевых условиях. Но иногда функциональность тестирования не зависит от особенностей базы данных. Есть ли способ тестировать данные без отправки в базу данных? Тестирование с базой данныхСкажем так, у нас есть […]

Stubbing Eloquent Relations for Faster Tests

Stubbing Eloquent Relations for Faster Tests When you’re trying to test methods on an Eloquent model, you often need to hit the database to really test your code. But sometimes the functionality you’re testing doesn’t really depend on database features. Is there any way to test that stuff without hitting […]

AN AUTOMAPPER FOR PHP, THE POWERFUL AND SIMPLE SOLUTION FOR MAPPINGS

Did you wonder how to eliminate problems with complexity of mapping, whose are always coming back to you? It concerns a many developers, who are creating backend-layer of web applications. This applies in particular to building an APIs, using Event-Driven architecture with a lot of DTO / VO objects. If […]