CakeFest 2024: The Official CakePHP Conference

Özel Oturum Eylemcisi

Veritabanlarını saklama alanı olarak kullanmak için veya başka bir saklama yöntemi kullanmak için session_set_save_handler() işleviyle kullanıcı seviyesinde bir saklama işlevleri kümesi tanımlamak gerekir. SessionHandlerInterface arayüzü kullanılarak oturum işleyicileri oluşturabilir veya SessionHandler sınıfı miras alınarak PHP'nin dahili işleyicileri genişletetilebilir.

session_set_save_handler() içinde belirtilen geri çağırımlar, bir oturumun yaşam döngüsü boyunca PHP tarafından çağrılan yöntemlerdir: open, read, write ve close. Temizlik görevlerinde, bir oturumu silmek için destroy ve düzenli olarak çöpleri toplamak için gc.

Bu nedenle, PHP'ye oturum kaydetme işleyicileri daima gereklidir. Öntanımlı işleyici, genellikle dahili dosyaları kaydetme işleyicisidir. Özel bir kaydetme işleyicisi, session_set_save_handler() kullanılarak atanabilir. Bunun yanında, dahili kaydetme işleyicileri sqlite, memcache ve memcached gibi PHP eklentileri tarafından da sağlanır ve session.save_handler ile atanabilir.

Oturum başladığında, PHP dahili olarak oturum açma işleyicisini, ardından da depolamaya olduğu gibi aktarılmak üzere kodlanmış bir dizge döndüren okuma geriçağrım işlevini çağırır. Okuma geriçağırım işlevi kodlanmış dizgeyi döndürdüğünde, PHP dizgeyi çözer ve ortaya çıkan diziyi $_SESSION süper küreseline aktarır.

PHP kapandığında (veya session_write_close() çağrıldığında), PHP dahili olarak $_SESSION süper küreselini kodlayacak ve bunu oturum kimliği ile birlikte yazma geriçağrımına iletecektir. Yazma geriçağırımı bittikten sonra, PHP dahili olarak kapatma geriçağırım işleyicisini çağırır.

Bir oturum özellikle yok edildiğinde, PHP oturum kimliğini aktararak yoketme işleyicisini çağırır.

PHP, bir oturumun belirlenen azami yaşam süresine göre herhangi bir oturum kaydını sona erdirmek için zaman zaman çöp toplama geriçağrımı yapar. Bu işlev, kalıcı depolamada, belirlenen yaşam süresinden daha uzun süre erişilen tüm kayıtları siler.

add a note

User Contributed Notes 1 note

up
-56
tony at marston-home dot demon dot co dot uk
5 years ago
Your custom session handler should not contain calls to any of the session functions, such as session_name() or session_id(), as the relevant values are passed as arguments on various handler methods. Attempting to obtain values from alternative sources may not work as expected.
To Top