Как освободить данные из запроса DBAL, но не получить их без закрытия соединения с базой данных? - PullRequest
0 голосов
/ 06 мая 2020

Я использую DBAL в Symfony версии 2.8 и PHP для запроса данных из моей базы данных, но после того, как я получаю результаты и больше не нуждаюсь в них, я хочу выпустить данные, которые могут быть кэшированы и ожидают от меня для его извлечения.

    // I've already opened the database connection somewhere before this code is executed.

    $s = 'SELECT * FROM MyTable;';
    $conn = $this->get( 'database_connection' );
    $query = $conn->executeQuery( $s );
    $data = $query->fetch();

    // At this point $data contains a row from the database or is FALSE.

    unset( $data, $query ); // This will tell php that I don't need these variables.

Может быть много строк кэшированных данных, ожидающих извлечения с сервера базы данных, занимающих ресурсы, которые я бы не стал тратить зря. Как я могу освободить невыгруженные данные запроса?

Я не хочу закрывать соединение с базой данных, потому что я буду использовать его для выполнения этого или других запросов, пока пользователь не выйдет из моего веб-приложения или время сеанса истекло.

Спасибо

1 Ответ

0 голосов
/ 13 мая 2020

Как написано в комментариях к исходному сообщению,

$query->closeCursor()

может использоваться, чтобы позволить DBAL (и базовым соединениям) освободить память, занятую ожидающими данными, не закрывая соединение.

...