Как в Symfony 3.4 принудительно закрыть соединение с MySQL

Достаточно частая ситуация, когда скрипт закончил всю работу с базой и переходит к какой-то длительной обработке данных. В такой ситуации соединение с БД остаётся открытым, но никто им не пользуется, в результате чего при большой нагрузке другие клиенты могут получить ошибку:

MySQL: ERROR 1040: Too many connections

Незадачливый амин или разработчик моментально предложит увеличить количество соединений. Но будет ли это хорошим решением? Не всегда.

Иногда гораздо эффективнее закрыть соединение с базой в тот момент, когда выполнен последний запрос и других запросов в приложении больше не будет. В Symfony 3.4 это можно сделать так:

$entityManager->getConnection()->close();

Таким простым способом можно решить сразу две проблемы:

  • Устранить причину возникновения ошибки
  • Увеличить производительность всей системы

Сохранив при этом потенциал к оптимизации и запас производительности системы.