Session_set_save_handler yakın / gc

2 Cevap

Ben bir oturum zaman sonra bir eylemi gerçekleştirmek gerekir. Ancak gelen bir isteği olmadan bu eylemi tetiklemek için nasıl hiçbir ipucu var. Bir olay işleyicisi / dinleyici / zamanlayıcı mükemmel uygun olurdu ama PHP böyle bir şeyi desteklemez çünkü ne istediğinizi başarmak gerçekten zor.

Arama sürü sonra ben session_set_save_handler rastladım ama ben hala tam olarak bu yöntem nasıl çalıştığını anlayamıyorum. Infaz edilecek zaman yakın yöntemi içinde eylemini tetikleyen kodu yazarsanız?

Ben de olduğu gibi geçerli oturum çözüm tutmak gerekiyor ve ben birlikte session_set_save_handler kullanarak etkileri ne olacak acaba? (Kullanıcı oturum veya bir istek oturumu tamamen tahrip (bu değer bir yapılandırma dosyasında ayarlanır) oturum zaman aşımı sonra bittiğinde Benim geçerli çözüm, bir oturum çerezi ayarlar oturuma bir ad atar ve oturumu başlar)

Saygılar!

2 Cevap

Bu AFAIK, php yapmak biraz zordur.

Ama pasif bir oturum yöneticisinin yaparak deneyebilirsiniz:

  • Bir zaman damgası ile ilişkili mağaza oturum kimlikleri.
  • Belirli kimliği ile ilişkilendirilmiş kullanıcı bir istekte her zaman, bu damgası yenileyin.

Sen sistemin akımını karşılaştırarak feshedilmiş oturumları algılamak ve her oturum id nin damgaları olabilir. Belirli bir treshold (30dk demek) Yukarıda farklı olanları, vefat varsayılmaktadır. Sonra bu oturum kimlikleri için kendi kaydedebilirsiniz işleyicileri yürütebilirsiniz.

Oturum sonunda işleyicisi bu süreç bir istek (herhangi bir kullanıcıdan) geldiğinde her zaman çalıştırılır, bu nedenle sitenizin trafik akışı üzerinde doğrudan bağlı olacak gibi, inmediately idam gerekiyorsa bu işe yaramaz.

Ama aynı zamanda Cron Jobs her 15dk kadar ayarlayarak bunu çözebilir. Lütfen kaydetmek işlemcileri ne kadar pahalı bağlı olarak, kabul edilebilir bir dönemsellik görünüyor.

PHP çalıştırmak için PHP kodu bir şekilde çalıştırmak gerekiyor. Ya bir kullanıcı isteği ya da bir cronjob aracılığıyla.

A Oturum yerel depolama kaydedilir PHP isteği yürütülmesi tamamlandığında veya zaman session_write_close() çağrıldığında

Bu session_set_save_handler() kendi kaydetmek işleyicisi yazmak için izin verir.