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

Как Zend DB управлява връзките към базата данни

Създаване на връзка

Създаването на екземпляр на клас Adapter не се свързва незабавно със сървъра на RDBMS . Адаптерът запазва параметрите на връзката и осъществява действителната връзка при поискване, за първия път трябва да изпълните заявка. Това гарантира, че създаването на обект Adapter е бързо и евтино. Можете да създадете екземпляр на адаптер, дори ако не сте сигурни, че трябва да изпълнявате каквито и да било заявки към база данни по време на текущата заявка, която приложението ви обслужва.

Ако трябва да принудите адаптера да се свърже с RDBMS, използвайте метода getConnection(). Този метод връща обект за връзката, представен от съответното разширение на база данни на PHP. Например, ако използвате някой от класовете Adapter за PDO драйвери, getConnection() връща PDO обекта, след като го инициира като жива връзка към конкретната база данни.

Може да бъде полезно да форсирате връзката, ако искате да хванете всички изключения, които тя хвърля в резултат на невалидни идентификационни данни за акаунт или друг неуспех при свързване със сървъра на RDBMS. Тези изключения не се хвърлят, докато се осъществи връзката, така че може да помогне за опростяване на кода на приложението ви, ако обработвате изключенията на едно място, вместо в момента на първата заявка към базата данни.

Освен това адаптерът може да се сериализира, за да го съхранява, например, в променлива на сесията. Това може да бъде много полезно не само за самия адаптер, но и за други обекти, които го агрегират, като обект Zend_Db_Select. По подразбиране адаптерите са разрешени да бъдат сериализирани, ако не го искате, трябва да помислите за предаване на опцията Zend_Db::ALLOW_SERIALIZATION с FALSE, вижте примера по-горе. За да се спазва принципът на мързеливи връзки, адаптерът няма да се свърже отново, след като бъде десериализиран. След това трябва сами да извикате getConnection(). Можете да накарате адаптера да се свърже автоматично, като предадете Zend_Db::AUTO_RECONNECT_ON_UNSERIALIZE с TRUE като опция за адаптер.

Затваряне на връзка

Обикновено не е необходимо да затваряте връзка с база данни. PHP автоматично почиства всички ресурси и края на заявка. Разширенията на базата данни са предназначени да затварят връзката, когато препратката към ресурсния обект се изчисти.

Въпреки това, ако имате дълготраен PHP скрипт, който инициира много връзки към базата данни, може да се наложи да затворите връзката, за да избегнете изчерпване на капацитета на вашия RDBMS сървър. Можете да използвате метода closeConnection() на адаптера, за да затворите изрично връзката с базата данни.

От версия 1.7.2 можете да проверите дали сте свързани в момента към сървъра на RDBMS с метода isConnected(). Това означава, че ресурсът за връзка е иницииран и не е затворен. Тази функция в момента не може да тества например затваряне на връзката от страна на сървъра. Това се използва вътрешно за затваряне на връзката. Позволява ви да затваряте връзката няколко пъти без грешки. Така беше вече преди 1.7.2 за PDO адаптери, но не и за останалите.

Още информация




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL SELECT Дублирани редове от OpenCarts DataBase

  2. Входът за колона е оцветен в сиво в MySQL Workbench

  3. Твърде големи POST данни. Намалете данните или увеличете post_max_size

  4. UTF-8:Генерал? Кошче? Unicode?

  5. Инструмент за команден ред на Doctrine 2; MAMP и mysql.sock