Динг дин дин!
Когато се свързва с MySQL, PHP обича да използва буферирани заявки . Това е вярно, независимо от метода, който използвате за свързване. Когато използвате буферирани заявки, целият набор от резултати се извлича незабавно, вместо да се извлича, когато попитате. Това е обикновено добро за производителност, тъй като има по-малко двупосочни пътувания.
Но както всичко в PHP, има проблем. Както е отбелязано на страницата за буфериране:
Използвате PHP 5.3, което означава, че има голяма вероятност да използвате mysqlnd.
Тук ще искате да изключите буферираните заявки. Това се прави по различен начин във всеки PHP интерфейс към MySQL:
- За PDO ще трябва да зададете
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY
атрибут наfalse
. - За mysqli трябва да предадете
MYSQLI_USE_RESULT
константа къмquery
метод. - За mysql трябва да извикате
mysql_unbuffered_query
вместоmysql_query
.
Пълни подробности и примери са на страницата.
Голяма дебела небуферирана заявка!
Виетрябва правилно затворете манипулатора на оператора и освободете набора от резултати, преди да издадете друга заявка:
- В PDO това означава извикване на
closeCursor
върху манипулатора на изявлението. - В mysqli това означава извикване на
free_result
на манипулатора на оператора илиfree
върху манипулатора на резултата, в зависимост от това с какво работите. - В mysql това означава извикване на
mysql_free_result
Ако не направите това, това ще доведе до грешка.