PHP oturum zaman aşımı geri?

4 Cevap php

Ben bir PHP + Apache + Centos Linux kombinasyonunu koşuyorum.

Ben bir giriş ve hayata geçirdik Web sitesinde çıkış.

Sorum php oturum zaman aşımına uğradı zaman (Kullanıcı günlüğü-out olmadan kendi tarayıcısını kapattı) nasıl bilebilirim, nedir?

The reason is, I want perform some cleanups and/or database updates (calling another PHP) when the user has done any of the following: (1) LOGGED-OUT or (2) TIMED-OUT

Benim tahminim doğru, Apache / Linux kullanımı yapmak zorunda olacağını?

4 Cevap

Bunun yerine dışarı php oturum zaman, 'değişmedi herkes için temiz kadar gerçekleştirmek / oturumu bazı yarı düzenli aralıklarla (her 5 dakikada büyük olasılıkla bir crontab iş kullanarak, söylemek) olarak çalışacak bir komut dosyası oluşturabilir zaman tespit t otomatik olarak son bir saat (veya ne olursa olsun zaman aşımı değeri) aktif olmuştur. Sadece kullanıcı tabloya 'lastseen' ekleyin.

Keeping track of sessions in a database

Eğer bir veritabanı tablosunda oturumların ayrıntılarını tutmak ve herhangi bir faaliyet giriş yaparsanız kolayca oturumları belirli bir süre için etkin olmuştur görmek için kontrol edebilirsiniz.

Process Queue

Kullanıcı eylemleri için işlevsellik temizlemek ekleyerek gereksiz web sitenizi yavaşlatmak için gidiyor. Bir kullanıcı bu eylemleri sunucudan bir yanıt almadan önce gerçekleşmesi için beklemek zorunda olmamalıdır.

CRON

Bunun yerine, bir sıra tabloya yapılacak eylemler, daha sonra periyodik olarak yapılması gerekenleri görmek için kuyruk tablosunu kontrol etmek için bir CRON iş kullanın ekleyebilirsiniz. CRON sözdizimi listelenir here.

Sen bir zaman damgası ile bir veritabanında oturum kimliği saklamak ve zaman damgası kullanıcının web sayfasını istediğinde her zaman güncelleyebilirsiniz.

Ardından, her "aktif" oturumu görünüyor hareketsizlik zamanı hesaplar ve "ölü" (yani periyodik olarak çalışan tek bir SQL statment ile yapılabilir) için oturumu güncelleştiren bir cron ayarlayın.

Ayrıca, oturum tablosunu güncelleştirmek ve "ölü" için oturumu ayarlamak için logoutu değiştirin.

Her neyse, ben ("standart" PHP fonksiyonları ile) Bunu yapmak için başka yollar olduğunu düşünüyorum, ama diğer insanların söylediklerine bakın izin vermeyin.

Ama Lighty + PHP + Ubuntu ile, aynı problem vardı. Ben sorun, php, sadece sayfa istekleri tepki vermez, olduğunu düşünüyorum, bu yüzden PHP zaman aşımı bir olayı almak için hiçbir şansı yoktur.

Siz PHP session-store-functions kılabilirsiniz ama bu da size yardımcı olmayacaktır.

Gerçi oturumunda geçen olayın zaman depolamak ve her seansta ile zaman aşımı içine çalıştırmak eski oturumlarını temizlemek başladı olabilir. Değil çok temiz bir yolu, ama ben buldum çalışan tek yolu.