Задать вопрос
  • Как работать с подключениями к БД в долгоживущих приложениях с EntityManager в RoadRunner?

    @dinya17 Автор вопроса
    Спасибо за ответ. Помогло.
    Но версия доктрины новее, видимо. Пришлось немного изменить код.
    class ConnectionWrapper extends Connection
    {
        private int $reconnectAttempts = 3;
    
        public function __construct(array $params, Driver $driver, ?Configuration $config = null, ?EventManager $eventManager = null)
        {
            parent::__construct($params, $driver, $config, $eventManager);
        }
    
        public function prepare($sql): Statement
        {
            $this->ping();
            return parent::prepare($sql);
        }
    
        public function executeQuery(string $sql, array $params = [], $types = [], QueryCacheProfile|null $qcp = null): Result
        {
            $this->ping();
            return parent::executeQuery($sql, $params, $types, $qcp);
        }
    
        public function executeStatement($sql, array $params = [], array $types = []): int
        {
            $this->ping();
            return parent::executeStatement($sql, $params, $types);
        }
    
        public function ping(): bool
        {
            try {
                if ($this->isConnected() && $this->getNativeConnection()->exec('SELECT 1') === 0) {
                    return true;
                }
            } catch (\PDOException $e) {
                // Считаем, что нет подключения, идем переподключаться
            }
    
            $this->close();
    
            for ($i = 0; $i < $this->reconnectAttempts; $i++) {
                try {
                    $this->connect();
                    if ($this->getNativeConnection()->exec('SELECT 1') === 0) {
                        return true;
                    }
                } catch (Exception $e) {
                    // ещё разок
                }
            }
    
            throw new RuntimeException("Unable to reconnect to the database.");
        }
    }
    Ответ написан
    Комментировать
  • Почему не срабатывает обработка эксепшена в активити Temporal?

    @dinya17 Автор вопроса
    Все заработало, я неверно понимал статистику в вебе темпорала.
    Ответ написан
    Комментировать
  • Как получить параметры Symfony приложения внутри сервиса?

    @dinya17 Автор вопроса
    Все неверно я описал.
    Задача состоит в том, чтобы использовать синхронный транспорт sync, но чтобы автоматически определялось в какую шину отправлять сообщения.
    Если есть синхронный транспорт и несколько шин для него, то чтобы я могу просто получить синхронный транспорт через DI и чтобы все сообщения в этот транспорт уходили и сами выбирали в какую шину падать.
    В общем получается странная ситуация. Я не хочу в сервис протаскивать с десяток шин и уже внутри решать в какую какое сообщение отправлять.
    Вот в чем суть.
    Ответ написан
  • Почему пропадает индекс в ElasticSearch после рестарта docker?

    @dinya17 Автор вопроса
    Всем спасибо. Я отвечаю с запозданием. Все заработало. Это было что - то локальное на машине. Сейчас все ок работает. В докере почистил кучу старых образов и все заработало.
    Ответ написан
  • Почему не работает связь One-To-Many Doctrine в Postgress поле для связи в camelCase?

    @dinya17 Автор вопроса
    В общем пока никто не ответил. Решил это все просто переименованием полей из верблюда в нижнее подчеркивание, все сразу взлетело. Но вот неужели по другому не решить?
    Ответ написан
    Комментировать
  • Почему Yii2 не отлавливает исключения при тестировании черезе Codeception?

    @dinya17 Автор вопроса
    Разобрался, надо просто наследоваться от HttpException, только в этом случае Кодесепшен нормально все обработает
    Ответ написан
    Комментировать
  • При повышении нагрузки на nuxtjs получаю ошибку FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory?

    @dinya17 Автор вопроса
    В общем разобрался сам со всем этим, не быстро , конечно, но сделал.
    Ошибка была , т.к. нагрузку давали не детстку, но при этом приложение работало на 1 ядре, а могло на 24.
    Нода не справлялась с нагрузкой, проц загибался, оператива съедалась.

    Решили это все следующим образом:
    1. Сначала ставим PM2 и запускаем это все на в режиме кластер.
    2. Ставим ssr кеширование и у нас все начинает летать.

    PM2 балансирует нагрузку, следит за процессами, рестартит все , если что не так.
    Кеш снимает нагрузку с процессора по отрисовке данных при каждом запросе.
    Ответ написан
    Комментировать