Mysql
 sql >> база данни >  >> RDS >> Mysql

Неочаквано достигане на ограничението на паметта на PHP с една PDO заявка?

Динг дин дин!

Когато се свързва с 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

Ако не направите това, това ще доведе до грешка.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Тип данни на резултата SUM в MySQL

  2. MySQL - UPDATE заявка с оператор SET в зависимост от резултата от предишния оператор SET

  3. Извличане на MySQL с Kivy

  4. Използване на UUID като първичен ключ с Laravel 5

  5. Грешка при неправилна стойност на низа в MySQL при запазване на Unicode низ в Django