2013-05-22 5 views
0

Я использую структуру, как показано ниже -Объем PDO используется в функции

class foo{ 
. 
. 
. 

    function bar($colID){ 
    try{ 
     $dbo = new PDO(get_db_DSN(), 
         get_db_USR(), 
         get_db_PWD()); 
     $pstmt = $dbo->prepare("SELECT * FROM table_name WHERE col=:colID"); 
     $pstmt->bindValue(':colID', $colID); 
     $pstmt->execute(); 
     . 
     . 
     . 
    }catch(PDOException e){ 
     ... 
     } 
} 

мне нужно знать, если PDO будет сохраняться, пока объект foo существует или, если он будет уничтожен сразу после конец области действия.

ответ

0

будет мусор ... если вы хотите, чтобы это было доступно после того, как функция возвращает вам следует использовать foo свойство для ее хранения.

+0

Я не хочу, чтобы он был доступен. Однако есть ли какие-либо действия, если я использую PDO таким образом? Я имею в виду отдельные PDO внутри каждой функции, которая им нужна? – Hanut

+0

было бы, но это не будет заметно. память сразу освобождается. В зависимости от ваших конфигураций конфигурации базы данных могут быть постоянными или нет ... Если они не постоянны, вы будете открывать новое соединение каждый раз, когда вы будете foo-> bar(). на веб-сайте, который требует высокой доступности, это большой нет-нет – jtavares

+0

Ah.As в отличие от наличия большого количества постоянных соединений? Не будет ли короткое продолжение продолжения, а затем отсоединение будет намного менее интенсивным в базе данных? – Hanut

2

После того, как бар $dbo будет «разрушен».

Переменные контейнеры уничтожаются, когда «refcount» достигает нуля. «Refcount» уменьшается на единицу, когда любой символ, связанный с контейнером переменной, покидает область действия (например, когда заканчивается функция) или когда unset() вызывается на символ.

Reference Counting Basics

+0

Краткая информация. – Hanut

+0

@HanutSingh, перейдите по ссылке выше. – sectus

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