1
0
mirror of https://github.com/php/doc-tr.git synced 2026-03-24 15:22:23 +01:00
Files
archived-doc-tr/reference/session/functions/session-set-save-handler.xml
2022-11-17 16:43:57 +03:00

400 lines
16 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 184f3f7bd45643cb80f828d0bb001991ec3a5fad Maintainer: nilgun Status: ready -->
<refentry xml:id="function.session-set-save-handler" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>session_set_save_handler</refname>
<refpurpose>Kullanıcı seviyesi oturum saklama işlevlerini bildirir
</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>bool</type><methodname>session_set_save_handler</methodname>
<methodparam><type>callable</type><parameter>open</parameter></methodparam>
<methodparam><type>callable</type><parameter>close</parameter></methodparam>
<methodparam><type>callable</type><parameter>read</parameter></methodparam>
<methodparam><type>callable</type><parameter>write</parameter></methodparam>
<methodparam><type>callable</type><parameter>destroy</parameter></methodparam>
<methodparam><type>callable</type><parameter>gc</parameter></methodparam>
<methodparam choice="opt"><type>callable</type><parameter>create_sid</parameter></methodparam>
<methodparam choice="opt"><type>callable</type><parameter>validate_sid</parameter></methodparam>
<methodparam choice="opt"><type>callable</type><parameter>update_timestamp</parameter></methodparam>
</methodsynopsis>
<para>
Aşağıdaki sözdizimi kullanılabilir:
</para>
<methodsynopsis>
<type>bool</type><methodname>session_set_save_handler</methodname>
<methodparam><type>object</type><parameter>oturum_işleyici</parameter></methodparam>
<methodparam choice="opt"><type>bool</type><parameter>kapanışı_kaydet</parameter><initializer>&true;</initializer></methodparam>
</methodsynopsis>
<para>
<function>session_set_save_handler</function> 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.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
Bu işlevin iki sözdizimi vardır. İkincisinin bağımsız değişkenleri:
<variablelist>
<varlistentry>
<term><parameter>oturum_işleyici</parameter></term>
<listitem>
<para>
Oturum işleyici olarak kaydedilmek üzere,
<interfacename>SessionHandlerInterface</interfacename> ve seçimlik
olarak <interfacename>SessionIdInterface</interfacename> ve/veya
<interfacename>SessionUpdateTimestampHandlerInterface</interfacename>
gerçekleyen <classname>SessionHandler</classname> gibi bir sınıfın
örneği.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>kapanışı_kaydet</parameter></term>
<listitem>
<para>
<function>session_write_close</function> işlevi
<function>register_shutdown_function</function> işlevi
olarak kaydedilir.
</para>
</listitem>
</varlistentry>
</variablelist>
Birincisinin bağımsız değişkenleri:
<variablelist>
<varlistentry>
<term><parameter>open</parameter></term>
<listitem>
<para>
Bir geriçağırım işlevi olup sözdizimi şöyle olabilir:
<methodsynopsis>
<type>bool</type><methodname><replaceable>open</replaceable></methodname>
<methodparam><type>string</type><parameter>kayıtYolu</parameter></methodparam>
<methodparam><type>string</type><parameter>oturumAdı</parameter></methodparam>
</methodsynopsis>
</para>
<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
<function>session_start</function> çağırarak çalıştırılan ilk
geriçağırım işlevidir. Başarı durumunda &true; yoksa &false; döner.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>close</parameter></term>
<listitem>
<para>
Bir geriçağırım işlevi olup sözdizimi şöyle olabilir:
<methodsynopsis>
<type>bool</type><methodname><replaceable>close</replaceable></methodname>
<void/>
</methodsynopsis>
</para>
<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, <function>session_write_close</function>
çağrıldığında da çalıştırılır.
Başarı durumunda &true; yoksa &false; döner.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>read</parameter></term>
<listitem>
<para>
Bir geriçağırım işlevi olup sözdizimi şöyle olabilir:
<methodsynopsis>
<type>string</type><methodname><replaceable>read</replaceable></methodname>
<methodparam><type>string</type><parameter>oturum_kimliği</parameter></methodparam>
</methodsynopsis>
</para>
<para>
<parameter>read</parameter> geriçağırımı daima dizgeleştirilmiş bir
oturum dizgesi veya hiç veri okunmamışsa boş dizge döndürmelidir.
</para>
<para>
Bu geriçağırım, PHP tarafından dahili olarak oturum başlarken veya
<function>session_start</function> çağrısıyla çalıştırılır. Bu
geriçağırımı çağırmadan önce PHP <parameter>open</parameter>
geriçağırımını çalıştırır.
</para>
<para>
Bu geriçağırımdam dönen dizgeleştirilmiş biçim, değiştirilmeden
<parameter>write</parameter> geriçağırımına aktarılabilecek biçimde
olmalıdır. Dönen değer PHP tarafından otomatik olarak nesneleştirilerek
<varname>$_SESSION</varname> dizisini doldurmakta kullanılır. Veri,
<function>serialize</function> işlevindekine benzese de <link
linkend="ini.session.serialize-handler">session.serialize_handler</link>
ini değişkeninde belirtilen biçimde olacağı unutulmamalıdır.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>write</parameter></term>
<listitem>
<para>
Bir geriçağırım işlevi olup sözdizimi şöyle olabilir:
<methodsynopsis>
<type>bool</type><methodname><replaceable>write</replaceable></methodname>
<methodparam><type>string</type><parameter>oturum_kimliği</parameter></methodparam>
<methodparam><type>string</type><parameter>veri</parameter></methodparam>
</methodsynopsis>
</para>
<para>
<parameter>write</parameter> geriçağırımı oturumun kaydedilip
kapatılması gerekince çağrılır. Geriçağırım geçerli oturum kimliğini
ve <varname>$_SESSION</varname> 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, <link
linkend="ini.session.serialize-handler">session.serialize_handler</link>
ini değişkeninde belirtilmiştir.
</para>
<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
<parameter>read</parameter> geriçağırımının döndürdüğü değer,
<parameter>write</parameter> geriçağırımına değiştirilmeden aktarılacak
biçimde olmalıdır.
</para>
<para>
Bu geriçağırım PHP kapanırken veya doğrudan
<function>session_write_close</function> çağrıldığında çalıştırılır.
Bu işlev çalıştırıldıktan sonra PHP dahili olarak
<parameter>close</parameter> geriçağırımını çalıştırır.
<note>
<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.
</para>
</note>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>destroy</parameter></term>
<listitem>
<para>
Bir geriçağırım işlevi olup sözdizimi şöyle olabilir:
<methodsynopsis>
<type>bool</type><methodname><replaceable>destroy</replaceable></methodname>
<methodparam><type>string</type><parameter>oturum_kimliği</parameter></methodparam>
</methodsynopsis>
</para>
<para>
Bu işlev, oturum kimliğini tek bağımsız değişken olarak alır.
<function>session_regenerate_id</function> işlevi eski_oturumu_sil
bağımsız değişkenine &true; atanarak çağrıldığında veya
<function>session_destroy</function> ile oturum yok edildiğinde bu
geriçağırım çalıştırılır. Başarı durumunda &true; yoksa &false; döner.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>gc</parameter></term>
<listitem>
<para>
Bir geriçağırım işlevi olup sözdizimi şöyle olabilir:
<methodsynopsis>
<type>bool</type><methodname><replaceable>gc</replaceable></methodname>
<methodparam><type>int</type><parameter>ömür</parameter></methodparam>
</methodsynopsis>
</para>
<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
<link linkend="ini.session.gc-probability">session.gc_probability</link>
ve <link linkend="ini.session.gc-divisor">session.gc_divisor</link>
yönergeleri ile ayarlanır. İşleve aktarılan ömür değeri <link
linkend="ini.session.gc-maxlifetime">session.gc_maxlifetime</link>
yönergesinin çalışma zamanı değerini değiştirir.
Başarı durumunda &true; yoksa &false; döner.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>create_sid</parameter></term>
<listitem>
<para>
Bir geriçağırım işlevi olup sözdizimi şöyle olabilir:
<methodsynopsis>
<type>string</type><methodname><replaceable>create_sid</replaceable></methodname>
<void/>
</methodsynopsis>
</para>
<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.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>validate_sid</parameter></term>
<listitem>
<para>
Bir geriçağırım işlevi olup sözdizimi şöyle olabilir:
<methodsynopsis>
<type>bool</type><methodname><replaceable>validate_sid</replaceable></methodname>
<methodparam><type>string</type><parameter>anahtar</parameter></methodparam>
</methodsynopsis>
</para>
<para>
Bir oturum başlatılıp bir oturum kimliği edinildiğinde <link
linkend="ini.session.use-strict-mode">session.use_strict_mode</link>
yönergesi de etkinse bu geriçağırım çalıştırılır.
<parameter>anahtar</parameter> doğrulanacak oturum kimliğidir. Bu
kimliğe sahip bir oturum varsa bu oturum kimliği geçerlidir.
Başarı durumunda &true; yoksa &false; döner.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>update_timestamp</parameter></term>
<listitem>
<para>
Bir geriçağırım işlevi olup sözdizimi şöyle olabilir:
<methodsynopsis>
<type>bool</type><methodname><replaceable>update_timestamp</replaceable></methodname>
<methodparam><type>string</type><parameter>anahtar</parameter></methodparam>
<methodparam><type>string</type><parameter>değer</parameter></methodparam>
</methodsynopsis>
</para>
<para>
Bir oturum güncellendiğinde bu geriçağırım çalıştırılır.
<parameter>anahtar</parameter> oturumun kimliği,
<parameter>değer</parameter> ise oturum verisidir.
Başarı durumunda &true; yoksa &false; döner.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&return.success;
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>- Özel oturum işleyici</title>
<para>
<classname>SessionHandlerInterface</classname> sayfasında kodun tamamı
vardır. Burada sadece çağrılan kısım gösterilmiştir.
</para>
<para>
Burada <function>session_set_save_handler</function> 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.
</para>
<programlisting role="php">
<![CDATA[
<?php
class MySessionHandler implements SessionHandlerInterface
{
// arayüzlerin gerçeklenimi burada
}
$handler = new MySessionHandler();
session_set_save_handler($handler, true);
session_start();
// $_SESSION dizisinden değerleri anahtarlarına göre
// elde etmek ve atamak için kodlar burada.
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<warning>
<para>
<parameter>write</parameter> ve <parameter>close</parameter> 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.
</para>
<para>
Bu yumurta/tavuk sorununu çözümlemek için bir yıkıcıdan
<function>session_write_close</function> ç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.
</para>
</warning>
<warning>
<para>
Eğer oturum, betiğin sonlanmasıyla kapanmışsa bazı SAPI'lerde, geçerli
çalışma dizini değiştirilir. Böyle durumlarda oturumu önceden
<function>session_write_close</function> ile kapatmak mümkündür.
</para>
</warning>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member>
<link linkend="ini.session.save-handler">session.save_handler</link>
yapılandırma yönergesi
</member>
<member>
<link linkend="ini.session.serialize-handler">session.serialize_handler</link>
yapılandırma yönergesi.
</member>
<member>The <function>register_shutdown_function</function></member>
<member>The <function>session_register_shutdown</function></member>
<member>
Eksiksiz bir yordamsal gönderim gerçeklenimi için bkz: <link
xlink:href="&url.session-save-handler;">save_handler.inc</link>
</member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->