2010-06-25 4 views
2

Мне было интересно, нужно ли мне позвонить $stmt->free_result() после того, как я сохранил его результат с $stmt->store_result()? Могу ли я просто позвонить $stmt->close() на конец?Должен ли я освободить mysql после его сохранения?

Причина, почему я спрашиваю это потому, что, когда я называю $stmt->num_rows Я назвать $stmt->store_result() как сказал здесь: http://www.php.net/manual/en/mysqli-stmt.num-rows.php, но они не называют $stmt->free_result() в их примере. Однако, на $stmt->store_result() они делают: http://www.php.net/manual/en/mysqli-stmt.store-result.php.

ответ

3

У вас нет , чтобы бесплатно высвободить результат, но вы можете, если хотите. Если вы этого не сделаете, результат будет освобожден, когда дескриптор инструкции выходит из области видимости.

+0

Увеличивает ли производительность, если я освобождаю результат и закрываю его? – Rihards

+0

Наверное, нет. Закрытие эффективно уменьшает результат. Из руководства: «mysqli_stmt_close() также освобождает дескриптор инструкции. Если текущий оператор имеет ожидающие или непрочитанные результаты, эта функция отменяет их, чтобы можно было выполнить следующий запрос». Даже тогда вам не нужно * явно освобождать или закрывать результат. Как только переменная, содержащая результат, выходит за пределы области видимости или отменяется, дескриптор инструкции и все прикрепленные к нему исчезают. – Charles

1

PHP довольно мягкий, освобождая ресурсы. Любые ресурсы, используемые вашим скриптом, такие как соединения SQL, будут освобождены при выходе сценария. Хотя это хорошая практика программирования, если у вас не так много одновременных пользователей, будет очень мало различий в производительности.

Смежные вопросы