<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/book.pdo.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'tr',
  ),
  'this' => 
  array (
    0 => 'pdo.connections.php',
    1 => 'Bağlantılar ve Bağlantı Y&ouml;netimi',
    2 => 'Bağlantılar ve Bağlantı Y&ouml;netimi',
  ),
  'up' => 
  array (
    0 => 'book.pdo.php',
    1 => 'PDO',
  ),
  'prev' => 
  array (
    0 => 'pdo.constants.php',
    1 => '&Ouml;ntanımlı Sabitler',
  ),
  'next' => 
  array (
    0 => 'pdo.transactions.php',
    1 => 'Hareketler ve Ototeslim',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'tr',
    'path' => 'reference/pdo/connections.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="pdo.connections" class="chapter">
 <h1 class="title">Bağlantılar ve Bağlantı Yönetimi</h1>

 <p class="para">
  Bağlantılar temel PDO sınıfının örneklenmesiyle kurulur. Hangi sürücünün
  kullanılacağının bir önemi yoktur; daima PDO sınıf isminin kullanılması gerekir.
  Veritabanı kaynağı (diğer bir deyişle DSN) ve isteğe bağlı olarak kullanıcı
  ismi ve parolası belirtmek için kurucu kullanılabilir.
 </p>
 <p class="para">
  <div class="example" id="example-1">
   <p><strong>Örnek 1 - MySQL&#039;e bağlanma</strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$dbh </span><span style="color: #007700">= new </span><span style="color: #0000BB">PDO</span><span style="color: #007700">(</span><span style="color: #DD0000">'mysql:host=localhost;dbname=test'</span><span style="color: #007700">, </span><span style="color: #0000BB">$user</span><span style="color: #007700">, </span><span style="color: #0000BB">$pass</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
 </p>
 <p class="para">
  Bir hata oluşursa bu bir <span class="classname"><a href="class.pdoexception.php" class="classname">PDOException</a></span> istisnasına
  sebep olur. Hatayı ele almak için istisna yakalanabilir veya işlem
  <span class="function"><a href="function.set-exception-handler.php" class="function">set_exception_handler()</a></span> üzerinden ayarlanmış bir
  küresel hata işleme uygulamasına bırakılabilir.
 </p>
 <p class="para">
  <div class="example" id="example-2"><p><strong>Örnek 2 - Bağlantı hatalarının ele alınışı</strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">try {<br />    </span><span style="color: #0000BB">$dbh </span><span style="color: #007700">= new </span><span style="color: #0000BB">PDO</span><span style="color: #007700">(</span><span style="color: #DD0000">'mysql:host=localhost;dbname=test'</span><span style="color: #007700">, </span><span style="color: #0000BB">$user</span><span style="color: #007700">, </span><span style="color: #0000BB">$pass</span><span style="color: #007700">);<br />} catch (</span><span style="color: #0000BB">PDOException $e</span><span style="color: #007700">) {<br /></span><span style="color: #FF8000">// örneğin zaman aşımını bekledikten sonra yediden bağlanmaya çalış<br /></span><span style="color: #007700">}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
 </p>
 <div class="warning"><strong class="warning">Uyarı</strong>
  <p class="para">
   Tıpkı diğer herhangi bir <a href="language.exceptions.php" class="link">istisna</a>
   gibi, <span class="classname"><a href="class.pdoexception.php" class="classname">PDOException</a></span> da bir <a href="language.exceptions.php#language.exceptions.catch" class="link"><code class="literal">catch</code></a> deyimi aracılığıyla
   açıkça veya <span class="function"><a href="function.set-exception-handler.php" class="function">set_exception_handler()</a></span> aracılığıyla dolaylı
   olarak yakalanabilir. Aksi takdirde varsayılan olarak, yakalanmamış bir
   istisnayı <strong><code>E_FATAL_ERROR</code></strong> ölümcül hatasına dönüştürme
   davranışı gerçekleşir. Ölümcül hata, bağlantı ayrıntılarını sızdırabilecek
   bir geri izleme içerecektir. Bu nedenle, bir üretim sunucusunda <var class="filename">php.ini</var>
   <a href="errorfunc.configuration.php#ini.display-errors" class="link"><code class="literal">display_errors</code></a>
   seçeneğine <code class="literal">0</code> atanmalıdır.
  </p>
 </div>
 <p class="para">
  Veritabanı bağlantısının başarıyla kurulmasıyla betiğinize PDO sınıfının bir
  örneği döner. PDO nesnesinin ömrü boyunca bağlantı etkin kalır. Bağlantıyı
  kapatmak için, nesneye gönderimli herşeyin silindiğinden emin olarak nesneyi
  yok etmek gerekir; nesneyi tutan değişkene <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> atanarak bu yapılabilir.
  Bu yapılmazsa, PHP betiği sonlandığında nesne kendiliğinden yok edilir.
 </p>
 <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
  <span class="simpara">
   Bu PDO örneğine hala başka gönderimler varsa (örneğin bir PDOStatement
   örneğinden veya aynı PDO örneğine gönderimli diğer değişkenlerden),
   bunların da kaldırılması gerekir (örneğin, PDOStatement&#039;a başvuran
   değişkene <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> atanarak).
  </span>
 </p></blockquote>
 <p class="para">
  <div class="example" id="example-3">
   <p><strong>Örnek 3 - Bir bağlantının kapatılışı</strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$dbh </span><span style="color: #007700">= new </span><span style="color: #0000BB">PDO</span><span style="color: #007700">(</span><span style="color: #DD0000">'mysql:host=localhost;dbname=test'</span><span style="color: #007700">, </span><span style="color: #0000BB">$user</span><span style="color: #007700">, </span><span style="color: #0000BB">$pass</span><span style="color: #007700">);<br /></span><span style="color: #FF8000">// burada bağlantıyı kullanıyoruz<br /><br /></span><span style="color: #0000BB">$sth </span><span style="color: #007700">= </span><span style="color: #0000BB">$dbh</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">query</span><span style="color: #007700">(</span><span style="color: #DD0000">'SELECT * FROM foo'</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// İşimiz bittiğine göre bağlantıyı kapatabiliriz.<br /></span><span style="color: #0000BB">$sth </span><span style="color: #007700">= </span><span style="color: #0000BB">null</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$dbh </span><span style="color: #007700">= </span><span style="color: #0000BB">null</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
 </p>
 <p class="para">
  Çoğu HTTP uygulaması veritabanı sunucularına kalıcı bağlantılardan medet
  umar. Kalıcı bağlantılar betiğin işi bittiğinde kapatılmaz, önbelleğe alınıp
  aynı kimlik kanıtlarıyla bağlantı kurmak isteyen başka betiklerce
  kullanılır. Kalıcı bağlantı önbelleği, bir betiğin bir veritabanı ile her
  iletişime geçme isteğinde yeni bir bağlantı kurma maliyetini ortadan
  kaldırır ve uygulamanın daha hızlı çalışmasını sağlar.
 </p>
 <p class="para">
  <div class="example" id="example-4">
   <p><strong>Örnek 4 - Kalıcı bağlantılar</strong></p>
   <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$dbh </span><span style="color: #007700">= new </span><span style="color: #0000BB">PDO</span><span style="color: #007700">(</span><span style="color: #DD0000">'mysql:host=localhost;dbname=test'</span><span style="color: #007700">, </span><span style="color: #0000BB">$user</span><span style="color: #007700">, </span><span style="color: #0000BB">$pass</span><span style="color: #007700">, array(<br />    </span><span style="color: #0000BB">PDO</span><span style="color: #007700">::</span><span style="color: #0000BB">ATTR_PERSISTENT </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">true<br /></span><span style="color: #007700">));<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
   </div>

  </div>
 </p>
 <p class="para">
  <strong><code><a href="pdo.constants.php#pdo.constants.attr-persistent">PDO::ATTR_PERSISTENT</a></code></strong> seçeneğinin değeri, sayısal
  olmayan bir dizge olmadığı sürece <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>&#039;a (kalıcı bağlantıları
  etkinleştir/devre dışı bırak) dönüştürülür, bu durumda çok sayıda kalıcı
  bağlantı havuzunun kullanımına izin verilir. Bu, farklı bağlantılar uyumsuz
  ayarlar kullanıyorsa, örneğin farklı
  <strong><code><a href="ref.pdo-mysql.php#pdo.constants.mysql-attr-use-buffered-query">PDO::MYSQL_ATTR_USE_BUFFERED_QUERY</a></code></strong> değerleri
  kullanılıyorsa yararlıdır.
 </p>
 <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
  <p class="para">
   Kalıcı bağlantı kullanmak için PDO kurucusuna aktarılan sürücü seçenekleri
   dizisinde <strong><code><a href="pdo.constants.php#pdo.constants.attr-persistent">PDO::ATTR_PERSISTENT</a></code></strong> sabitine <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>
   atanmalıdır. Nesne ilklendirildikten sonra bu özelliğin
   <span class="methodname"><a href="pdo.setattribute.php" class="methodname">PDO::setAttribute()</a></span> ile etkin kılınması
   istenirse sürücü kalıcı bağlantıları kullanmayacaktır.
  </p>
 </p></blockquote>
 <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
  <p class="para">
   PDO ODBC sürücüsü kullanılıyorsa ve ODBC kütüphaneleri ODBC Bağlantı
   Havuzlarını destekliyorsa (hem unixODBC hem de Windows bunu yapar;
   başkaları da olabilir) kalıcı PDO bağlantılarının kullanılması önerilmez;
   bağlantı önbelleklemesini ODBC Bağlantı Havuzlama katmanına bırakmak daha
   iyidir. ODBC Bağlantı Havuzu bağlantıyı süreçteki diğer modüllerle
   paylaşır; eğer PDO bağlantıyı önbelleklemeye çalışırsa bu bağlantı asla
   ODBC bağlantı havuzuna dönmez ve sonuçta diğer modüllere hizmet vermek için
   ek bağlantılar oluşur.
  </p>
 </p></blockquote>
</div>
<?php manual_footer($setup); ?>