Ding ding ding!
Saat menghubungkan ke MySQL, PHP suka menggunakan kueri buffer . Ini benar terlepas dari metode apa yang Anda gunakan untuk terhubung. Saat menggunakan kueri yang di-buffer, seluruh hasil akan segera diambil alih-alih diambil saat Anda bertanya. Ini biasanya bagus untuk performa, karena perjalanan pulang pergi lebih sedikit.
Tapi seperti semua yang ada di PHP, ada gotcha. Seperti yang tertera di halaman buffering:
Anda menggunakan PHP 5.3, yang berarti kemungkinan besar Anda menggunakan mysqlnd.
Anda akan ingin mematikan kueri buffer di sini. Ini dilakukan secara berbeda di setiap antarmuka PHP ke MySQL:
- Untuk PDO, Anda harus menyetel
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY
atribut kefalse
. - Untuk mysqli, Anda harus meneruskan
MYSQLI_USE_RESULT
konstan kequery
metode. - Untuk mysql, Anda perlu memanggil
mysql_unbuffered_query
bukannyamysql_query
.
Detail lengkap dan contoh ada di halaman.
Kueri tanpa buffer yang besar dan gemuk!
Anda harus tutup pegangan pernyataan dengan benar dan bebaskan kumpulan hasil sebelum mengeluarkan kueri lain:
- Dalam PDO, ini berarti memanggil
closeCursor
pada pegangan pernyataan. - Di mysqli, ini berarti memanggil
free_result
pada pegangan pernyataan ataufree
pada pegangan hasil, tergantung pada apa yang Anda kerjakan. - Di mysql, ini berarti memanggil
mysql_free_result
Kegagalan untuk melakukan ini akan mengakibatkan kesalahan.