Иван
значит $this->requestStack не заполнился как положено
Алексей
значит $this->requestStack не заполнился как положено
на локалке нужных заголовков нету, но почему такая ошибка ? и как правильно его "заполнить" ?
Иван
он в конструктор зависимостью должен придти
Алексей
если дампить, то там не Null там вполне обычный request
Алексей
он в конструктор зависимостью должен придти
у меня как в этой доке выглядит: https://symfony.com/doc/current/service_container/request.html
Алексей
и попробовал прописать в services.yaml: App\Services\RealIpResolverService: class: App\Services\RealIpResolverService arguments: $requestStack: '@request_stack' autowire: true
Алексей
нужного нету заголовка, но объект Request сетится. может хотя бы варианты есть куда копнуть ?
Алексей
Может просто заголовок не передается?
хорошо, как его существование проверить тогда ?
Алексей
В кастомном ивент листенере на логирование происходил вызов , который вызывал эту ошибку !
Nikolay
Подскажите, кто работал с PhpSpreadSheet. Есть код вида $reader = new Html(); $spreadsheet = $reader->loadFromString($data); $sheet = $spreadsheet->getActiveSheet(); $writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet); $writer->save($filePointer); По документации смотрел, не нашел что-то именно про запись чанками. Логика примерно такая: 1. Генеририруется шаблон в twig с n-записями 2. Записывается в файл 3. Вернуться к пункту 1 и так по кругу (пока все не обработается)
Павел
Приветствую. Мб кто подскажет по RoadRunner+symfony. 1) Правильно ли я понимаю, механизм работы: голанг скрипт поднимает несколько воркеров (скриптов php), каждый из которых поднимает симфу, и потом уже неребутится контейнер. Т.е. запросы так или иначе все равно синхронные, в рамках конкурентности за доступ, просто имеют шаред память внутри одного воркера и шаред контейнер? 2) На что нужно сразу обратить внимание в инфре? Если используется em - то после каждого запроса чистить, как в воркерах мессенджера. Что на счет коннектов? Честно говоря особо в мессенджере и не задумывался, хотя механизм в приниципе один и тот же :) Делать что-то типа пинга на каждый запрос? И для mysq и для редиса? Хотя опять же, но для редиса ничего подобного не делал для мессенджера. Мб сразу кто еще какие советы поднакидает из своего опыта, как с симфой так и настройкой самого RR. Пока просто по доке иду, а там просто composer install и все завелось (на первый взгляд)
Kirill
Приветствую. Мб кто подскажет по RoadRunner+symfony. 1) Правильно ли я понимаю, механизм работы: голанг скрипт поднимает несколько воркеров (скриптов php), каждый из которых поднимает симфу, и потом уже неребутится контейнер. Т.е. запросы так или иначе все равно синхронные, в рамках конкурентности за доступ, просто имеют шаред память внутри одного воркера и шаред контейнер? 2) На что нужно сразу обратить внимание в инфре? Если используется em - то после каждого запроса чистить, как в воркерах мессенджера. Что на счет коннектов? Честно говоря особо в мессенджере и не задумывался, хотя механизм в приниципе один и тот же :) Делать что-то типа пинга на каждый запрос? И для mysq и для редиса? Хотя опять же, но для редиса ничего подобного не делал для мессенджера. Мб сразу кто еще какие советы поднакидает из своего опыта, как с симфой так и настройкой самого RR. Пока просто по доке иду, а там просто composer install и все завелось (на первый взгляд)
1) Да, RR полностью синхронный 2) Обычно просто грохают кернел, так что и коннекты улетают вслед за ним
Kirill
Ну и там же есть kernel->terminate у симфы
Kirill
и соответсвенно такие же интерфейсы, которые позволяют всё убить
Павел
1) Да, RR полностью синхронный 2) Обычно просто грохают кернел, так что и коннекты улетают вслед за ним
А в чем смысл убивать весь кернел и когда его убивать? Ведь весь смысл РР что кернел живет
Kirill
и соответсвенно такие же интерфейсы, которые позволяют всё убить
пыщ https://symfony.com/doc/current/components/http_kernel.html#8-the-kernel-terminate-event
Kirill
у него нет нестинг-контейнеров
kakoi-to-noob
Ещё про сессию не забывай, что при каждом запросе была актуальная
Kirill
у него нет нестинг-контейнеров
$appContainer = new Container(); $requestContainer = new Container($container);
Kirill
Ну т.е. там нет возможности поместить сервисы в "сессионный слой", так, чтобы часть сервисов принадлежала всем, а часть только в рамках какой-то конкретной сессии (одному юзеру)
Kirill
В частности, например, коннект к БД должен принадлежать только одному юзеру, выделяя доступ из коннекшн пула. Иначе если все будут юзать один и тот же коннект, то стейт (транзакции, сейвпоинты и проч) будет перетекать от одного юзера другому
Kirill
поэтому проще убивать всё)
Павел
пыщ https://symfony.com/doc/current/components/http_kernel.html#8-the-kernel-terminate-event
Чет не понимаю про terminate. У нас ядро должно жить между запросами, в этом и перфоманс. Или я путаю ядро с бутстрапом.
Kirill
перфоманс можно и с удалениям ядра получить)
Kirill
у тебя же код будет подгружен уже в память весь
Kirill
Kirill
тем более у ПДО косяки с ними
Kirill
и инфа о транзакшн левеле может не соотвествовать аналогичному в БД
Павел
исключение словил, транзакцию не закрыл и давай досвидания
Ну там вроде в transactional сам по себе или коммит или ролбэк в finaly
Kirill
а если он отломается?)
Kirill
короче, смирись, что это не очень надёжная шляпа и создать новый коннект не сложно
Юра
Может проще взять специально под него сделанный фреймвкор?
Юра
https://spiral.dev/docs/start-server/current/en
Павел
Может проще взять специально под него сделанный фреймвкор?
Спасибо, надо почитать. У нас минисервис на симфе 2 нагруженных эндпоинта, вот подумал мб РР подкрутить)
Kirill
Еще, что за " коннекшн пул" ?
менеджер соединений к бд
Kirill
с некой примитивной балансировкой
Юра
Спирал выглядит как ларавель только с доктриной (которая там не доктрина но очень похожа\)
Kirill
по раунд робину в основном
Павел
менеджер соединений к бд
Ну это что то из симфы, или свое крутить? Я просто докладик один смотрел, они как раз какие то пулы "мутили" свои. Правда доклад по свул
Kirill
короче, берёшь дефолтный стек симфы + фпм
Kirill
выкидываешь фпм и ставишь вместо него РР
Kirill
и всё, профит
Kirill
уже буст под 1к RPS получишь
Kirill
Ну я так и сделал
ну вот этого пока что более чем достаточно
Kirill
память течь не будет, т.к. контейнер грохается
Kirill
а если надо что-то специфичное - есть терминейт интерфейс
Павел
ну вот этого пока что более чем достаточно
Ну вот надо понять что подкрутить, например тот же принужительный грох контейнера, он же не грохается по умолчанию
Сергей
Спасибо, надо почитать. У нас минисервис на симфе 2 нагруженных эндпоинта, вот подумал мб РР подкрутить)
Если ты бандл используешь, там на все исключения кернел ребутится и между итерациями воркера все пингуется. Кажется основные проблемы полечены
Kirill
Kirill
или изобретай свой контейнер
Kirill
и способы изоляции
Kirill
и способы подчистки памяти
Павел
и тогда огребёшь кучу проблем с конкаррент-доступом к тому, к чему не нужно
Да я хочу по миниму, чтобы просто работало нормально)
Kirill
оно по дефолту нормально работает)
Павел
оно по дефолту нормально работает)
Ммм понял:) хотел просто удостовериться у юзающих в проде людей)
Сергей
https://github.com/Baldinof/roadrunner-bundle?ysclid=lobwmvn0r4584041290#kernel-reboots
Павел
https://github.com/Baldinof/roadrunner-bundle?ysclid=lobwmvn0r4584041290#kernel-reboots
Ага, его юзаю. Короче просто углубиться в его конфиги и стретегии. Самому не выдумывать более ничего.
Kirill
А я свой писал, обойти возможные DDOS сервера из-за проблем в PSR и избавиться от двойного маршаллинга (DTO -> HttpFoundation, вместо DTO -> PSR -> HttpFoundation)
Kirill
А для рантайма тупо заюзал готовый симфони рантайм (он как раз и ребутит кернел каждый раз)
Павел
уже буст под 1к RPS получишь
При ребуте получил почти 0 прироста, что очень странно. Без рибута прирост есть, оринтентировочно x2 где то, но я уперся похоже в коннекты своего компа )) Тестировал яндекс-танком и 250 rps отказывает инет похоже)
Kirill
ты ведь в курсе, что "ребут" - это шляпа, когда он весь сервер рестартует после каждого запроса?
Kirill
и ты должен в минус огроменный улететь
Kirill
у меня вот в полном дебаг режиме - около 5 rps
Павел
Ну ты сам говорил вчера что не париться и сбрасывать контейнер
Kirill
ну да
Kirill
900 rps на локальном докере выдаёт у меня
Kirill
с копейками
Kirill
тестил тупо через апач бенчмарк
Юра
Поэтому проще ничего не ребутать а просто грохать рез в 100 запросов
Юра
Я тоже про кернел
Юра
Мессенджер ребутает кернел?
Kirill
а, ну типа резеттеры эти