Sergey
Хотел поинтересоваться: а кто-нибудь делает свои фасады в ларке?
Насколько мне кажется их создали,чтобы упростить DI для новичков. То есть ты в любом месте пишешь фасад и используешь его статик методы. Без всяких "усложнений" по добавлению по получению объекта через DI. Правда нарушая при этом SOLID и делая проблемным тестирование
Sergey
Фасады в ларе просто для сокращения синтаксиса, но даже в доке их не очень советуют использовать
Кстати, поражает, что в доке их не рекомендуют использовать но в примерах только они
sofar
Вот, проблема в тестировании, да
sofar
Спасибо, убедился в своих подозрениях
Vladimir
вообще в той же доке про это как раз информация
Vladimir
их можно тестировать и тд нормально
Sergey
тем более фасады в несколько кликов (или клик + поиск) можно заменить на DI :)
Vladimir
просто там предостережение - классы не должны быть большими
Vladimir
https://laravel.com/docs/5.3/facades
Sergey
их можно тестировать и тд нормально
нельзя. из-за статиков идут очень большие утечки памяти и не всегда после теста Application чистится правильно
Sergey
И дело не в классах. дело именно в Application
Sergey
Кстати, в тестах ларавель сам по себе течет (5.2 точно) по 7 метров на тест у нас было
Sergey
голая ларавелька
Sergey
Поэтому лучше обойтись без фасадов (тем более без IDE Helper подсказки в шторме не работают)
Vladimir
Пока тут нормальные вопросы-ответы пошли... у меня такой вопрос. Как вы тестируете нагрузочно свои проекты? Больше даже интересует анализ. Например, вам нужно спрогнозировать какую нагрузку сможет выдержать ваш текущий проект. Какими методами/инструментами пользуетесь и что почитать?
Sergey
Хороший вопрос, тоже интересно кто чем делал. я только ab гонял
Sergey
с xhprof
Sergey
В целом, в нем можно довольно сложные схемы описывать а не просто один роут дергать.
Vladimir
Пока все, что я придумал - это выделить самое узкое место (страница с максимальной нагрузкой на базу и тд) и пройтись по этому месту одним из сервисов, которые генерируют активных пользователей + посещаемость. Ну по хорошему перед этим еще желательно насидить данных достаточно. Но хотелось бы знать, как это "по-взрослому" делают люди
Sergey
лучше разноплановые запросы генерировать, причем чем похожее будет профиль на реальную нагрузку, тем будет лучше
sofar
Не знаю как по-взрослому, у нас когда было нагрузочное тестирование пользовались Apache JMeter
Sergey
горлышки могут быть не только в бд. в файловой системе той же самое
sofar
Это весь мой опыт нагрузочного тестирования
Sergey
нагрузка по памяти (Какой-то неоптимальный кусок кода)
Sergey
плюс еще кэши могут сбивать. Тоже считаю, что нагрузочное тестирвание с ними надо делать
Sergey
в итоге, тяжелый запрос к бд может быть закеширован и всё очень быстро работать будет. а на деле (когда пользователей много и для каждого запрос не закэширован) всё будет тормозить
Sergey
ведь всегда лень уникальные данные придумывать :) а иногда это и вообще очень сложно сделать
sofar
У нас на проекте для этого был добавлен параметр в запрос, для того, чтобы кеш не использовался
sofar
Вообще он был добавлен изначально для дургих целей, как раз для пользовательских, но тут пригодилось очень кстати
Vladimir
хмм. ман бы какой-нибудь, статейку. если встретите что-нибудь такое - делитесь, пожалуйста)
Sergey
У нас на проекте для этого был добавлен параметр в запрос, для того, чтобы кеш не использовался
код подстраивать под тесты не очень хорошая идея. Скорее всего в архитектуре могут быть изъяны
sofar
не, ты прав, это костыль
Sergey
А blackfire.io ты не пробовал?
неа, у меня задача проще была. мне нужно было сделать очень быстрый ресайз картинок
Sergey
и это было узкое место.
Sergey
вот и гоняли под нагрузкой ресайз одной картинки (с кэшем) и параллельно многих
sofar
Но он крайне необходим был в короткие сроки, поэтому приняли решение пока сделать так
sofar
Это да
Vladimir
А blackfire.io ты не пробовал?
а вы юзали? выглядит не плохо вроде
sofar
Нет, но вот как раз слышал хорошее о нем
sofar
Но представления не имею, честно
sofar
Сотрудник из предыдущего места работы очень восторженно рассказывал, но я ничего не запомнил
Vladimir
Запишу себе, спасибо)
Vladimir
Anonymous
Через что принимаете оплату в битках? В идеале нужно просто пополнять баланс аккаунта, который в $
Anonymous
Предположим что я делаю выборку $data = Notify::where('group_id', '=', $id);
Anonymous
Могу ли я теперь из data какими то средствами получить информацию?
Anonymous
например сделать выборку через where из самой переменной?
Anonymous
Чтобы не делать лишних запросов к бд?
Anonymous
А то делать поочередно 5 запросов
Anonymous
чтобы получить 5 count значений
Anonymous
как то не особо
Anonymous
->where()->where
Anonymous
Мне нужно получить
Anonymous
5 разных count
Anonymous
у меня есть поле type, и оно может быть 1 из 5.
Anonymous
И по каждому значению, мне нужно узнать, сколько строк там есть
Anonymous
groupby group_id
Anonymous
и там в select(bd::raw(count(*)))
Anonymous
как-то так
Anonymous
эксперементируй
Anonymous
все не то
Anonymous
группируешь по этому id и тебе сразу даёт список count для каждого из нужных id
Anonymous
<?php Notify::select(DB::raw('COUNT(*) as count, group_id'))->whereIn('group_id', [$id,$id2,$id3])->groupBy('group_id');
Anonymous
что-то такое
Anonymous
выдаст несколько строк count
Anonymous
для каждого id
Anonymous
id один
Anonymous
а вот type
Anonymous
несколько
Anonymous
Структура таблицы имеет такой вид примерно id, group_id, type, readed.
Anonymous
Anonymous
group_id я указываю.
Anonymous
ты когда постишь что-то - нормальн объясняйся
Anonymous
а вот type бывает = group, comments, message, wall, board
Anonymous
и мне нужно узнать, сколько есть строк, с readed=false, по каждому типу уведомлений, у группы
Anonymous
ну так а что тебе посчитать нужно?