<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.session.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'tr',
  ),
  'this' => 
  array (
    0 => 'function.session-set-save-handler.php',
    1 => 'session_set_save_handler',
    2 => 'Kullanıcı seviyesi oturum saklama işlevlerini bildirir',
  ),
  'up' => 
  array (
    0 => 'ref.session.php',
    1 => 'Oturum İşlevleri',
  ),
  'prev' => 
  array (
    0 => 'function.session-set-cookie-params.php',
    1 => 'session_set_cookie_params',
  ),
  'next' => 
  array (
    0 => 'function.session-start.php',
    1 => 'session_start',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'tr',
    'path' => 'reference/session/functions/session-set-save-handler.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.session-set-save-handler" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">session_set_save_handler</h1>
  <p class="verinfo">(PHP 4, PHP 5, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">session_set_save_handler</span> &mdash; <span class="dc-title">Kullanıcı seviyesi oturum saklama işlevlerini bildirir
  </span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.session-set-save-handler-description">
  <h3 class="title">Açıklama</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>session_set_save_handler</strong></span>(<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.callable.php" class="type callable">callable</a></span> <code class="parameter">$open</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.callable.php" class="type callable">callable</a></span> <code class="parameter">$close</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.callable.php" class="type callable">callable</a></span> <code class="parameter">$read</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.callable.php" class="type callable">callable</a></span> <code class="parameter">$write</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.callable.php" class="type callable">callable</a></span> <code class="parameter">$destroy</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.callable.php" class="type callable">callable</a></span> <code class="parameter">$gc</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.callable.php" class="type callable">callable</a></span> <code class="parameter">$create_sid</code><span class="initializer"> = ?</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.callable.php" class="type callable">callable</a></span> <code class="parameter">$validate_sid</code><span class="initializer"> = ?</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.callable.php" class="type callable">callable</a></span> <code class="parameter">$update_timestamp</code><span class="initializer"> = ?</span></span><br>): <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></div>

  <p class="para rdfs-comment">
   Aşağıdaki sözdizimi kullanılabilir:
  </p>
  <div class="methodsynopsis dc-description"><span class="methodname"><strong>session_set_save_handler</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.object.php" class="type object">object</a></span> <code class="parameter">$oturum_işleyici</code></span>, <span class="methodparam"><span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span> <code class="parameter">$kapanışı_kaydet</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong></span></span>): <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></div>

  <p class="para rdfs-comment">
   <span class="function"><strong>session_set_save_handler()</strong></span> işlevi, bir oturumla ilişkili
   verileri almak ve saklamak için kullanılan kullanıcı seviyesi oturum
   saklama işlevlerini bildirir. PHP oturumlarında başka kaynaklardan
   sağlanmış bir saklama yöntemi (oturum verilerini bir yerel veritabanıda
   saklamak gibi) kullanılacaksa bu işlev çok işe yarar.
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.session-set-save-handler-parameters">
  <h3 class="title">Bağımsız Değişkenler</h3>
  <p class="para">
   Bu işlevin iki sözdizimi vardır. İkincisinin bağımsız değişkenleri:
   <dl>
    
     <dt><code class="parameter">oturum_işleyici</code></dt>
     <dd>
      <p class="para">
       Oturum işleyici olarak kaydedilmek üzere,
       <span class="interfacename"><a href="class.sessionhandlerinterface.php" class="interfacename">SessionHandlerInterface</a></span> ve seçimlik
       olarak <span class="interfacename"><a href="class.sessionidinterface.php" class="interfacename">SessionIdInterface</a></span> ve/veya
       <span class="interfacename"><a href="class.sessionupdatetimestamphandlerinterface.php" class="interfacename">SessionUpdateTimestampHandlerInterface</a></span>
       gerçekleyen <span class="classname"><a href="class.sessionhandler.php" class="classname">SessionHandler</a></span> gibi bir sınıfın
       örneği.
      </p>
     </dd>
    
    
     <dt><code class="parameter">kapanışı_kaydet</code></dt>
     <dd>
      <p class="para">
       <span class="function"><a href="function.session-write-close.php" class="function">session_write_close()</a></span> işlevi
       <span class="function"><a href="function.register-shutdown-function.php" class="function">register_shutdown_function()</a></span> işlevi
       olarak kaydedilir.
      </p>
     </dd>
    
   </dl>
   Birincisinin bağımsız değişkenleri:
   <dl>
    
     <dt><code class="parameter">open</code></dt>
     <dd>
      <p class="para">
       Bir geriçağırım işlevi olup sözdizimi şöyle olabilir:
       <div class="methodsynopsis dc-description"><span class="methodname"><span class="replaceable">open</span></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$kayıtYolu</code></span>, <span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$oturumAdı</code></span>): <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></div>

      </p>
      <p class="para">
       Bu işlev, sınıflardaki kurucular gibi çalışır ve oturum açıldığında
       çalıştırılır. Açma işlevinin iki bağımsız değişken kabul edeceği varsayılır.
       İlkinde dosyaların kaydedileceği yerin yolu, ikincisinde oturum ismi
       verilir. Oturum başlatıldığında otomatik olarak veya elle
       <span class="function"><a href="function.session-start.php" class="function">session_start()</a></span> çağırarak çalıştırılan ilk
       geriçağırım işlevidir. Başarı durumunda <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> yoksa <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> döner.
      </p>
     </dd>
    
    
     <dt><code class="parameter">close</code></dt>
     <dd>
      <p class="para">
       Bir geriçağırım işlevi olup sözdizimi şöyle olabilir:
       <div class="methodsynopsis dc-description"><span class="methodname"><span class="replaceable">close</span></span>(): <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></div>

      </p>
      <p class="para">
       Bu işlev, sınıflardaki yıkıcılar gibidir ve write geriçağırım işlevinden
       sonra çalıştırılır. Ayrıca, <span class="function"><a href="function.session-write-close.php" class="function">session_write_close()</a></span>
       çağrıldığında da çalıştırılır.
       Başarı durumunda <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> yoksa <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> döner.
      </p>
     </dd>
    
    
     <dt><code class="parameter">read</code></dt>
     <dd>
      <p class="para">
       Bir geriçağırım işlevi olup sözdizimi şöyle olabilir:
       <div class="methodsynopsis dc-description"><span class="methodname"><span class="replaceable">read</span></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$oturum_kimliği</code></span>): <span class="type"><a href="language.types.string.php" class="type string">string</a></span></div>

      </p>
      <p class="para">
       <code class="parameter">read</code> geriçağırımı daima dizgeleştirilmiş bir
       oturum dizgesi veya hiç veri okunmamışsa boş dizge döndürmelidir.
      </p>
      <p class="para">
       Bu geriçağırım, PHP tarafından dahili olarak oturum başlarken veya
       <span class="function"><a href="function.session-start.php" class="function">session_start()</a></span> çağrısıyla çalıştırılır. Bu
       geriçağırımı çağırmadan önce PHP  <code class="parameter">open</code>
       geriçağırımını çalıştırır.
      </p>
      <p class="para">
       Bu geriçağırımdam dönen dizgeleştirilmiş biçim, değiştirilmeden
       <code class="parameter">write</code> geriçağırımına aktarılabilecek biçimde
       olmalıdır. Dönen değer PHP tarafından otomatik olarak nesneleştirilerek
       <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var> dizisini doldurmakta kullanılır. Veri,
       <span class="function"><a href="function.serialize.php" class="function">serialize()</a></span> işlevindekine benzese de <a href="session.configuration.php#ini.session.serialize-handler" class="link">session.serialize_handler</a>
       ini değişkeninde belirtilen biçimde olacağı unutulmamalıdır.
      </p>
     </dd>
    
    
     <dt><code class="parameter">write</code></dt>
     <dd>
      <p class="para">
       Bir geriçağırım işlevi olup sözdizimi şöyle olabilir:
       <div class="methodsynopsis dc-description"><span class="methodname"><span class="replaceable">write</span></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$oturum_kimliği</code></span>, <span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$veri</code></span>): <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></div>

      </p>
      <p class="para">
       <code class="parameter">write</code> geriçağırımı oturumun kaydedilip
       kapatılması gerekince çağrılır. Geriçağırım geçerli oturum kimliğini
       ve <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var> dizisinin dizgeleştirilmiş sürümünü
       bağımsız değişken olarak alır. PHP tarafından dahili olarak kullanılan
       dizgeleştirme yöntemi, <a href="session.configuration.php#ini.session.serialize-handler" class="link">session.serialize_handler</a>
       ini değişkeninde belirtilmiştir.
      </p>
      <p class="para">
       Bu geriçağırıma aktarılan dizgeleştirilmiş oturum saklama verisi,
       kimliği aktarılan oturumla ilgili olmalıdır. Bu veri alındığında
       <code class="parameter">read</code> geriçağırımının döndürdüğü değer,
       <code class="parameter">write</code> geriçağırımına değiştirilmeden aktarılacak
       biçimde olmalıdır.
      </p>
      <p class="para">
       Bu geriçağırım PHP kapanırken veya doğrudan
       <span class="function"><a href="function.session-write-close.php" class="function">session_write_close()</a></span> çağrıldığında çalıştırılır.
       Bu işlev çalıştırıldıktan sonra PHP dahili olarak
       <code class="parameter">close</code> geriçağırımını çalıştırır.
       <blockquote class="note"><p><strong class="note">Bilginize</strong>: 
        <p class="para">
         Bu işlev çıktı akımı kapanana kadar çalıştırılmaz. Bu bakımdan bu
         işlevdeki hata ayıklama deyimlerinin çıktıları tarayıcıda hiçbir
         zaman görünmez. Eğer hata ayıklama çıktısı gerekliyse, bu çıktının
         bir dosyaya yazılması önerilir.
        </p>
       </p></blockquote>
      </p>
     </dd>
    
    
     <dt><code class="parameter">destroy</code></dt>
     <dd>
      <p class="para">
       Bir geriçağırım işlevi olup sözdizimi şöyle olabilir:
       <div class="methodsynopsis dc-description">
        <span class="methodname"><span class="replaceable">destroy</span></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$oturum_kimliği</code></span>): <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></div>

      </p>
      <p class="para">
       Bu işlev, oturum kimliğini tek bağımsız değişken olarak alır.
       <span class="function"><a href="function.session-regenerate-id.php" class="function">session_regenerate_id()</a></span> işlevi eski_oturumu_sil
       bağımsız değişkenine <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> atanarak çağrıldığında veya
       <span class="function"><a href="function.session-destroy.php" class="function">session_destroy()</a></span> ile oturum yok edildiğinde bu
       geriçağırım çalıştırılır. Başarı durumunda <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> yoksa <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> döner.
      </p>
     </dd>
    
    
     <dt><code class="parameter">gc</code></dt>
     <dd>
      <p class="para">
       Bir geriçağırım işlevi olup sözdizimi şöyle olabilir:
       <div class="methodsynopsis dc-description"><span class="methodname"><span class="replaceable">gc</span></span>(<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$ömür</code></span>): <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></div>

      </p>
      <p class="para">
       Çöp toplayıcı geriçağırım işlevi olup, eski oturum verilerini
       temizlemek için dahili olarak PHP tarafından düzenli aralıklarla
       çağrılır. Sıklık
       <a href="session.configuration.php#ini.session.gc-probability" class="link">session.gc_probability</a>
       ve <a href="session.configuration.php#ini.session.gc-divisor" class="link">session.gc_divisor</a>
       yönergeleri ile ayarlanır. İşleve aktarılan ömür değeri <a href="session.configuration.php#ini.session.gc-maxlifetime" class="link">session.gc_maxlifetime</a>
       yönergesinin çalışma zamanı değerini değiştirir.
       Başarı durumunda <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> yoksa <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> döner.
      </p>
     </dd>
    
    
     <dt><code class="parameter">create_sid</code></dt>
     <dd>
      <p class="para">
       Bir geriçağırım işlevi olup sözdizimi şöyle olabilir:
       <div class="methodsynopsis dc-description"><span class="methodname"><span class="replaceable">create_sid</span></span>(): <span class="type"><a href="language.types.string.php" class="type string">string</a></span></div>

      </p>
      <p class="para">
       Bu geriçağırım yeni bir oturum kimliği gerektiğinde çalıştırılır.
       Bağımsız değişkensizdir ve dönüş değeri dizge olarak geçerli bir oturum kimliği
       olmalıdır.
      </p>
     </dd>
    
    
     <dt><code class="parameter">validate_sid</code></dt>
     <dd>
      <p class="para">
       Bir geriçağırım işlevi olup sözdizimi şöyle olabilir:
       <div class="methodsynopsis dc-description"><span class="methodname"><span class="replaceable">validate_sid</span></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$anahtar</code></span>): <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></div>

      </p>
      <p class="para">
       Bir oturum başlatılıp bir oturum kimliği edinildiğinde <a href="session.configuration.php#ini.session.use-strict-mode" class="link">session.use_strict_mode</a>
       yönergesi de etkinse bu geriçağırım çalıştırılır.
       <code class="parameter">anahtar</code> doğrulanacak oturum kimliğidir. Bu
       kimliğe sahip bir oturum varsa bu oturum kimliği geçerlidir.
       Başarı durumunda <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> yoksa <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> döner.
      </p>
     </dd>
    
    
     <dt><code class="parameter">update_timestamp</code></dt>
     <dd>
      <p class="para">
       Bir geriçağırım işlevi olup sözdizimi şöyle olabilir:
       <div class="methodsynopsis dc-description"><span class="methodname"><span class="replaceable">update_timestamp</span></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$anahtar</code></span>, <span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$değer</code></span>): <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></div>

      </p>
      <p class="para">
       Bir oturum güncellendiğinde bu geriçağırım çalıştırılır.
       <code class="parameter">anahtar</code> oturumun kimliği,
       <code class="parameter">değer</code> ise oturum verisidir.
       Başarı durumunda <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> yoksa <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> döner.
      </p>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.session-set-save-handler-returnvalues">
  <h3 class="title">Dönen Değerler</h3>
  <p class="para">
   Başarı durumunda <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>, başarısızlık durumunda <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> döner.
  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-function.session-set-save-handler-examples">
  <h3 class="title">Örnekler</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Örnek 1 - Özel oturum işleyici</strong></p>
    <div class="example-contents"><p>
     <span class="classname"><a href="class.sessionhandlerinterface.php" class="classname">SessionHandlerInterface</a></span> sayfasında kodun tamamı
     vardır. Burada sadece çağrılan kısım gösterilmiştir.
    </p></div>
    <div class="example-contents"><p>
     Burada <span class="function"><strong>session_set_save_handler()</strong></span> işlevinin NYP
     sözdizimi kullanılmakta ve kapanışı_kaydet bağımsız değişkeni ile kapanış
     işlevi kayıt altına alınmaktadır. Nesneleri oturum kayıt işleyicisi
     olarak kayıt altına alma işlemi genel olarak böyledir ve böyle
     yapılması önerilir.
    </p></div>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">class </span><span style="color: #0000BB">MySessionHandler </span><span style="color: #007700">implements </span><span style="color: #0000BB">SessionHandlerInterface<br /></span><span style="color: #007700">{<br />    </span><span style="color: #FF8000">// arayüzlerin gerçeklenimi burada<br /></span><span style="color: #007700">}<br /><br /></span><span style="color: #0000BB">$handler </span><span style="color: #007700">= new </span><span style="color: #0000BB">MySessionHandler</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">session_set_save_handler</span><span style="color: #007700">(</span><span style="color: #0000BB">$handler</span><span style="color: #007700">, </span><span style="color: #0000BB">true</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">session_start</span><span style="color: #007700">();<br /><br /></span><span style="color: #FF8000">// $_SESSION dizisinden değerleri anahtarlarına göre<br />// elde etmek ve atamak için kodlar burada.</span></span></code></div>
    </div>

   </div>
  </p>
 </div>


 <div class="refsect1 notes" id="refsect1-function.session-set-save-handler-notes">
  <h3 class="title">Notlar</h3>
  <div class="warning"><strong class="warning">Uyarı</strong>
   <p class="para">
    <code class="parameter">write</code> ve <code class="parameter">close</code> eylemcileri
    nesne yokedildikten sonra çağrılmaktadır. Bu bakımdan nesneler ve istisna
    yavrulama kullanılamaz. İstisnalar da yakalanamaz, ne yakalanır ne de
    herhangi bir istisna izi görüntülenir ve çalışma beklenmedik bir şekilde
    durur. Ancak nesne yıkıcılar oturumlarda kullanılabilir.
   </p>
   <p class="para">
    Bu yumurta/tavuk sorununu çözümlemek için bir yıkıcıdan
    <span class="function"><a href="function.session-write-close.php" class="function">session_write_close()</a></span> çağrısı yapmak mümkündür fakat
    en güvenilir yol, kapanış işlevini yukarıda açıklandığı gibi kayıt altına
    almaktır.
   </p>
  </div>
  <div class="warning"><strong class="warning">Uyarı</strong>
   <p class="para">
    Eğer oturum, betiğin sonlanmasıyla kapanmışsa bazı SAPI&#039;lerde, geçerli
    çalışma dizini değiştirilir. Böyle durumlarda oturumu önceden
    <span class="function"><a href="function.session-write-close.php" class="function">session_write_close()</a></span> ile kapatmak mümkündür.
   </p>
  </div>
 </div>


 <div class="refsect1 seealso" id="refsect1-function.session-set-save-handler-seealso">
  <h3 class="title">Ayrıca Bakınız</h3>
  <p class="para">
   <ul class="simplelist">
    <li>
     <a href="session.configuration.php#ini.session.save-handler" class="link">session.save_handler</a>
     yapılandırma yönergesi
    </li>
    <li>
     <a href="session.configuration.php#ini.session.serialize-handler" class="link">session.serialize_handler</a>
     yapılandırma yönergesi.
    </li>
    <li>The <span class="function"><a href="function.register-shutdown-function.php" class="function" rel="rdfs-seeAlso">register_shutdown_function()</a> - Betiğin işi bittiğinde &ccedil;alıştırılacak işlevi tanımlar</span></li>
    <li>The <span class="function"><a href="function.session-register-shutdown.php" class="function" rel="rdfs-seeAlso">session_register_shutdown()</a> - Oturum kapanma işlevini kaydeder</span></li>
    <li>
     Eksiksiz bir yordamsal gönderim gerçeklenimi için bkz: <a href="https://github.com/php/php-src/blob/master/ext/session/tests/save_handler.inc" class="link external">&raquo;&nbsp;save_handler.inc</a>
    </li>
   </ul>
  </p>
 </div>


</div><?php manual_footer($setup); ?>