Иван
значит $this->requestStack не заполнился как положено
Иван
он в конструктор зависимостью должен придти
Алексей
если дампить, то там не Null там вполне обычный request
Алексей
и попробовал прописать в services.yaml:
App\Services\RealIpResolverService:
class: App\Services\RealIpResolverService
arguments:
$requestStack: '@request_stack'
autowire: true
Алексей
нужного нету заголовка, но объект Request сетится.
может хотя бы варианты есть куда копнуть ?
Nikolay
Алексей
В кастомном ивент листенере на логирование происходил вызов , который вызывал эту ошибку !
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
и соответсвенно такие же интерфейсы, которые позволяют всё убить
Павел
Kirill
Kirill
у него нет нестинг-контейнеров
kakoi-to-noob
Ещё про сессию не забывай, что при каждом запросе была актуальная
Kirill
Ну т.е. там нет возможности поместить сервисы в "сессионный слой", так, чтобы часть сервисов принадлежала всем, а часть только в рамках какой-то конкретной сессии (одному юзеру)
Kirill
В частности, например, коннект к БД должен принадлежать только одному юзеру, выделяя доступ из коннекшн пула. Иначе если все будут юзать один и тот же коннект, то стейт (транзакции, сейвпоинты и проч) будет перетекать от одного юзера другому
Kirill
поэтому проще убивать всё)
Kirill
Kirill
перфоманс можно и с удалениям ядра получить)
Kirill
у тебя же код будет подгружен уже в память весь
Павел
Kirill
Kirill
тем более у ПДО косяки с ними
Kirill
и инфа о транзакшн левеле может не соотвествовать аналогичному в БД
Kirill
а если он отломается?)
Kirill
короче, смирись, что это не очень надёжная шляпа и создать новый коннект не сложно
Юра
Может проще взять специально под него сделанный фреймвкор?
Павел
Юра
https://spiral.dev/docs/start-server/current/en
Kirill
Kirill
с некой примитивной балансировкой
Юра
Спирал выглядит как ларавель только с доктриной (которая там не доктрина но очень похожа\)
Kirill
по раунд робину в основном
Павел
менеджер соединений к бд
Ну это что то из симфы, или свое крутить? Я просто докладик один смотрел, они как раз какие то пулы "мутили" свои. Правда доклад по свул
Kirill
короче, берёшь дефолтный стек симфы + фпм
Kirill
выкидываешь фпм и ставишь вместо него РР
Kirill
и всё, профит
Павел
Kirill
уже буст под 1к RPS получишь
Kirill
память течь не будет, т.к. контейнер грохается
Kirill
а если надо что-то специфичное - есть терминейт интерфейс
Kirill
Kirill
или изобретай свой контейнер
Kirill
и способы изоляции
Kirill
и способы подчистки памяти
Павел
Kirill
оно по дефолту нормально работает)
Сергей
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
Юра
Я тоже про кернел
Юра
Мессенджер ребутает кернел?
Kirill
а, ну типа резеттеры эти