Михаил
Короче понаделуют сложностей, а потом разгоебай
Павел
Короче понаделуют сложностей, а потом разгоебай
Ну там просто свой uri ресурс формат есть, даже в ресте, типа id в json передавать как /resource_name/{id}
The Ant
@SerafimArts ты топил за Рамзи ууид, говорил что у него мол код лучше и все такое. Объясни плс, почему симфа не может десериализовать строковый ууид из жсонки в Рамзи ууиид в проперти дтошки?! Без костылей не заводится. А симфонический ууид поставил и работает. Как же так?
The Ant
Я заебался уже писать свои костыли, чтобы хоть чтото заработало
Павел
Я заебался уже писать свои костыли, чтобы хоть чтото заработало
Так ты их копируй просто из проекта в проект и все))
The Ant
У Рамзи пакет есть для симфы, о котором нужно ещё догадаться
Павел
У Рамзи пакет есть для симфы, о котором нужно ещё догадаться
А не, че вру, знал, без него же и не заюзаешь
Павел
Точнее рамси для доктрины
Павел
Или еще есть для симфы именно?
The Ant
https://github.com/api-platform/ramsey-uuid
The Ant
Вот в апи платформ есть )
Павел
https://github.com/api-platform/ramsey-uuid
У меня чет только массив не заводился, хз почему
Павел
Пришлось написать отдельно
Павел
Ну я про свой кастомный, но он такой же
The Ant
У меня чет только массив не заводился, хз почему
Скорее всего докблок надо было сделать с Foo[]
The Ant
И подключить парсер докблоков
Павел
Поидее если без докблоков, то работают add -еры
Павел
У меня почему то проблема была именно с юидами, с другим не было. Мб не хоттелось аддеры добавлять в дто, не помню уже)
The Ant
Тож не помню. Делал дтошку с идами на масс удаление. Вродь ниче жопоптджигательного не случалось.
Вадим
привет! public function preUpdate(TaskPlan $taskPlan, PreUpdateEventArgs $event): void { if ($event->hasChangedField('coordX') || $event->hasChangedField('coordY')) { // $this->bus->dispatch(new MakeTaskPlanPreviewMessage($taskPlan->getId())); } } Апи Платформа. TaskPlan - субсущность. При патче агрегата Task возникает ошибка CORS если вот эту строку не закомментить. Почему так?
Вадим
как это не в браузере
Вадим
в браузере
Михаил
Ну мало ли
Вадим
так это ж браузеры придумали в браузерах так делать
Михаил
Ну мало ли
Михаил
А что в самой ошибке корс? Что ему не нравится?
Михаил
И посмотри как отработал префетч запрос
Вадим
Cross-origin Resource Sharing Error: MissingAllowOriginHeader
Вадим
вот что хром пишет
Михаил
Вообще выглядит как бред - если в листенере не закоментить строку с мессадж басом то происходит корс Корс может произойти если 1) твой сервер на префетч запрос ответил что такой метод или заголовки нельзя использовать 2) твой сервер ответил не 200 кодом
Вадим
Request URL: https://экзампле.ком Request Method: PATCH Status Code: 200 OK Referrer Policy: strict-origin-when-cross-origin
Михаил
Ну у меня едиственное предположение 1) браузер отправляет префетч 2) сервер ловит префетч и отрабатывает обычный контроллер 3) код доходит до мессаже бас и падает с 500 4) в респонс вываливается 500 - префетч зафейлился. Это корс Я бы на твоём месте расчехлил файловые логи и отправил бы запрос. Сначала который 200, потом который вызывает корс. И глянул бы сколько реальных запросов было и какая логика вызывалась
Вадим
NOTICE: PHP message: PHP Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 20480 bytes) in /app/vendor/doctrine/doctrine-bundle/src/Middleware/BacktraceDebugDataHolder.php on line 45 backend-1 | 192.168.48.7 - 10/Jul/2024:18:59:50 +0000 "PATCH /index.php" 200 backend-1 | NOTICE: PHP message: PHP Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 65536 bytes) in /app/vendor/symfony/error-handler/DebugClassLoader.php on line 296
Вадим
ещё непонятнее стало
Вадим
что это может быть?
Юра
Значит что пхп потребил очень много памяти и сдох
Alexander
Больше чем memory_limit
Вадим
это понятно, а почему в этих странных классах
Юра
Возможно там вся коллекция доктрины грузится в память или ещё что-то
Юра
это понятно, а почему в этих странных классах
Тут бесполезно смотреть на классы оно пишет то место которое последнее попыталось выделить память
Вадим
а, понил
Юра
Xdebug profiler + cachegrind
Вадим
да да спасибо
Михаил
Интересно, что в корс контроллере может триггерить запросы в бд)))
Михаил
нет там запросов в бд
В любом случае напиши оказался ли я прав
Вадим
да, завтра буду ковырять
Вадим
напишу чо было
Михаил
Мммм, каев. У меня на пет проекте тоже аниме происходит. Ща затру
Михаил
Написал бота. Развернул его на кубере - всё работает. Решил что пусть он задачки на выполнения тянет с другого сервиса. Написал сигнальный сервер. Логика следущая: 1) бот отправляет на сигнальный сервер запрос на получение задачи и передаёт свой id 2) сервер открывает транзакцию, тянет задачку, которую не брали или которую кто-то взял, но давно не отчитывался по ней (упал) 3) проставляет в этой задачке id бота и время взятия 4) коммитит транзакцию и флашет Бд у меня к которой обращается pod в кубере и контейнер в локальном докере - одна и та же (буквально подключаюсь к серверу внешнему). Локально всё работает. Я ставлю задачу, бот обращается к ней, в задаче появляется текущей timestamp и id бота, после того как задача выполнена она закрывается Но п*дор который в кубере крутится тоже вроде берёт задачу, но почему-то НЕ проставляет данные в бд. Как будто commit или flush не отрабатывает. Но при этом бот начинает выполнять задачу, то есть респонс вернулся. Вот в чём может быть прикол, в чём разность этих env? Причем контейнеры что в кубере что локально в докере идентичны. А ещё говорят что gpt захватит мир и лишит программистов работы
Денис
А кролик разве не для этого придуман?
Ярослав
Написал бота. Развернул его на кубере - всё работает. Решил что пусть он задачки на выполнения тянет с другого сервиса. Написал сигнальный сервер. Логика следущая: 1) бот отправляет на сигнальный сервер запрос на получение задачи и передаёт свой id 2) сервер открывает транзакцию, тянет задачку, которую не брали или которую кто-то взял, но давно не отчитывался по ней (упал) 3) проставляет в этой задачке id бота и время взятия 4) коммитит транзакцию и флашет Бд у меня к которой обращается pod в кубере и контейнер в локальном докере - одна и та же (буквально подключаюсь к серверу внешнему). Локально всё работает. Я ставлю задачу, бот обращается к ней, в задаче появляется текущей timestamp и id бота, после того как задача выполнена она закрывается Но п*дор который в кубере крутится тоже вроде берёт задачу, но почему-то НЕ проставляет данные в бд. Как будто commit или flush не отрабатывает. Но при этом бот начинает выполнять задачу, то есть респонс вернулся. Вот в чём может быть прикол, в чём разность этих env? Причем контейнеры что в кубере что локально в докере идентичны. А ещё говорят что gpt захватит мир и лишит программистов работы
Логи в помощь, а также sentry в случае exceptions
Михаил
Логи в помощь, а также sentry в случае exceptions
Да вот в том то и делов что ошибок нет. Ну это понятно что надо подрубать логирование, но просто трындец, два одинаковых env но вот так работают
Михаил
Без логов и ошибок тут может помочь разве что ванга или гадалка ))
да я не больше у вас спрашивал а говорил что есть вот такие приколы
Михаил
ясен хрен что тут самому нужно разбираться. просто обидно что один и тот же контейнер, одна и та же бд - но поведение разное
Михаил
и 0 ошибок)
Dmitry
Написал бота. Развернул его на кубере - всё работает. Решил что пусть он задачки на выполнения тянет с другого сервиса. Написал сигнальный сервер. Логика следущая: 1) бот отправляет на сигнальный сервер запрос на получение задачи и передаёт свой id 2) сервер открывает транзакцию, тянет задачку, которую не брали или которую кто-то взял, но давно не отчитывался по ней (упал) 3) проставляет в этой задачке id бота и время взятия 4) коммитит транзакцию и флашет Бд у меня к которой обращается pod в кубере и контейнер в локальном докере - одна и та же (буквально подключаюсь к серверу внешнему). Локально всё работает. Я ставлю задачу, бот обращается к ней, в задаче появляется текущей timestamp и id бота, после того как задача выполнена она закрывается Но п*дор который в кубере крутится тоже вроде берёт задачу, но почему-то НЕ проставляет данные в бд. Как будто commit или flush не отрабатывает. Но при этом бот начинает выполнять задачу, то есть респонс вернулся. Вот в чём может быть прикол, в чём разность этих env? Причем контейнеры что в кубере что локально в докере идентичны. А ещё говорят что gpt захватит мир и лишит программистов работы
так локально и в контуре кубера разве должны быть одинаковые env ?
Dmitry
доступ к контейнеру пода в кубере есть напрямую ? зайди в него и выполни trace или ping или curl или wget к бд взависимсоти тот того что установлено
Dmitry
проверь printenv который в контейнере и который локально и выполни compare вдруг все-таки различия есть и кубер перезаписал часть твоих переменных
Dmitry
а ты можешь напрямую подключиться к бд через под и выполнить транзакцию или insert или еще что-то ?
Dmitry
короче тупо в команду что-то подобное class TaskService { private $entityManager; private $logger; public function __construct(EntityManagerInterface $entityManager, LoggerInterface $logger) { $this->entityManager = $entityManager; $this->logger = $logger; } public function assignTaskToBot($botId) { $this->logger->info('Запрос на получение задачи отправлен', ['bot_id' => $botId]); $this->entityManager->beginTransaction(); try { $this->logger->info('Транзакция открыта'); $task = $this->entityManager->getRepository(Task::class)->findAvailableTask(); if (!$task) { throw new \Exception('Нет доступных задач'); } $this->logger->info('Задача получена', ['task_id' => $task->getId()]); $task->setBotId($botId); $task->setTimestamp(new \DateTime()); $this->entityManager->persist($task); $this->logger->info('Задача обновлена', ['task_id' => $task->getId(), 'bot_id' => $botId]); $this->entityManager->flush(); $this->entityManager->commit(); $this->logger->info('Транзакция закоммичена'); return $task; } catch (\Exception $e) { $this->entityManager->rollback(); $this->logger->error('Ошибка при выполнении транзакции', ['exception' => $e]); throw $e; } } }
Виктор
Всем привет! Пишу тесты для класса, который работает с файловой системой. Использую библиотеку vfsStream. В одном из тестируемых методов используется Imagine: открывает изображение, модифицирует и пишет в другую директорию. На этапе чтения кидает ошибку: Imagine\Exception\RuntimeException: Protocol "vfs" not supported or disabled in libcurl Поковырял исходники. Он там в определённый момент смотрит, доступен ли curl, и если нет - использует file_get_contents. Понятное дело, что curl у меня доступен, вот только vfs он не поддерживает. Собственно, код внутри Imagine: $isCurlSupported = false; if (function_exists('curl_init') && function_exists('curl_version')) { $curlVersion = curl_version(); if (is_array($curlVersion) && !empty($curlVersion['version'])) { if (version_compare($curlVersion['version'], static::MINIMUM_CURL_VERSION) >= 0) { $isCurlSupported = true; } } } А теперь вопрос: работает ли с vfs file_get_contents, и если да, то как возможно ли как-то в тесте сделать так, чтобы Imagine не видел curl? Или, может, вообще есть какой-то другой, более простой способ решить эту проблему?
Kirill
можешь в теории переопрделить стрим доступа к файлам)