Türkiye'nin En Eski Webmaster Forumu İyinet'e Hoşgeldiniz!

sessionlar kendi kendine siliniyor

atay

0
Onaylı Üye
Üye
Katılım
29 Ekim 2005
Mesajlar
3,592
Açılan Konu
298
Tepki puanı
36
uzun zamandır bu sorunla karşılaşıyordum fakat son zamanlarda sürekli yapmaya başladı.

bazen 50-60 sayfa, bazen 3-5 sayfa gezdikten sonra sessionlar siliniyor ve sistem, üyeyi login sayfasına atıyor.

sessionlar, zaman aşımına uğradığı için silinmiyor, çünkü ardarda yapılan bağlantılarda da bu sorun oluyor.

belli bir sayfada olmuyor, her an, herhangi bir sayfaya girildiğinde yapabiliyor.

herhangi bir çözüm üretemedim, ilginç bir durum. fikir verebilecek arkadaşlar varsa sevinirim.

kul. ve şifre doğruysa session şu şekilde açılıyor:

PHP:
$id=rowdan alınan id bilgisi
$_SESSION['id']=$id;

her sayfada bulunan oturum kontrol include'nin içeriği:

PHP:
session_start();
if ($_SESSION['id'] == 0) {
header("location:/index.php?hata=oturum&yer=oturum.php");
exit;
}

$userid = $_SESSION['id'];
$id = $_SESSION['id'];

makine linux, centos.

sorun serverdanda kaynaklanabilir diye düşünüyorum. server için test edebileceğim birşeyler biliyorsanız, onuda yazabilirsiniz.
 

asiye

0
Onaylı Üye
Üye
Katılım
16 Şubat 2005
Mesajlar
129
Açılan Konu
13
Tepki puanı
0
Konum
merkür
kullandığınız scriptte "setSessionTimeout" gibi bir kod arayabilirsiniz , karşısında genellikle zaman süreci olur, ordan değiştirebilyeyi deneyebilirsiniz..

örnek;setSessionTimeout("9000")
 

atay

0
Onaylı Üye
Üye
Katılım
29 Ekim 2005
Mesajlar
3,592
Açılan Konu
298
Tepki puanı
36
scripti ben yazdım. ki yukarıda ki mesajımda zaman limiti ile alakalı bir sorun olamayacağını belirttim, 5 saniye önce yenileme yapıldıktan sonra bile düşme olabiliyor.
 

asiye

0
Onaylı Üye
Üye
Katılım
16 Şubat 2005
Mesajlar
129
Açılan Konu
13
Tepki puanı
0
Konum
merkür
sunucu size aitse php.ini içinde bu "session.gc_maxlifetime" kodun karşısındaki zamanı yükseltmeyin deneyebilirsiniz.
genelde"session.gc_maxlifetime=1440" olur..
 

atay

0
Onaylı Üye
Üye
Katılım
29 Ekim 2005
Mesajlar
3,592
Açılan Konu
298
Tepki puanı
36
bana ait, orayı daha önce düzenlemiştim 5440 olarak çalışıyor şu anda. sessionların zaman aşımına uğradığını düşünmüyorum, bu tarz bir sorun olamaz.

sorun büyük ihtimalle kodlardan da değil, serverdan kaynaklanıyor.

scripti kendi localhost'ta yazarken bu tarz login problemi hiç yaşamadım. servera attıktan sonra, anlamsız düşmeler başladı.

serverlarda, toplam session açılma limiti gibi bir sınırlama var mı? sitede ortalama 250 civarı online kullanıcı oluyor (son 15dk içinde işlem yapan) bu konuda bilgisi olan var mı?
 

atay

0
Onaylı Üye
Üye
Katılım
29 Ekim 2005
Mesajlar
3,592
Açılan Konu
298
Tepki puanı
36
burada sessionların ne kadar süre aktif kalacağını ayarlamak anlatılmış, php.ini'ye gerek duymadan. yazdıklarımı okuyormusunuz? eğer sessionlar bir şekilde timeout sebebiyle düşseydi, düşmelerin belli bir zamanı olurdu. girişten 1 saniye sonrada düşebiliyor, 10 dakika sonrada düşebiliyor. sorun timeout tarzı birşey değil yani.
 

asiye

0
Onaylı Üye
Üye
Katılım
16 Şubat 2005
Mesajlar
129
Açılan Konu
13
Tepki puanı
0
Konum
merkür
pardon rahatsız ettik..iyi günler
 

desoLate

0
Onaylı Üye
Üye
Katılım
14 Haziran 2006
Mesajlar
220
Açılan Konu
23
Tepki puanı
0
php.ini ayarlamalarıyla ilgili nerdeyse hiç bir bilgim yok ama google'da session ayarlaması ile ilgili biraz araştırma yaptım ve emin olamamakla birlikte belki yardımcı olacak bir bölüm buldum.

HTML:
;     session.save_path = "N;/path"
;
; where N is an integer.  Instead of storing all the session files in
; /path, what this will do is use subdirectories N-levels deep, and
; store the session data in those directories.  This is useful if you
; or your OS have problems with lots of files in one directory, and is
; a more efficient layout for servers that handle lots of sessions.
;
; NOTE 1: PHP will not create this directory structure automatically.
;         You can use the script in the ext/session dir for that purpose.
; NOTE 2: See the section on garbage collection below if you choose to
;         use subdirectories for session storage
;
; The file storage module creates files using mode 600 by default.
; You can change that by using
;
;     session.save_path = "N;MODE;/path"
;
; where MODE is the octal representation of the mode. Note that this
; does not overwrite the process's umask.
session.save_path = "/tmp"

Yukardaki ingilizce açıklama metninde anladığım kadarıyla; "eğer çok sayıda session dosyasını tek bir klasörde kayıt ederek problemle karşılaşıyorsanız, alt dizinlere kayıt etmek daha yararlı olabilir" şeklinde birşey diyor.

Senin sorunun da yüzü aşkın session kayıt anlarında olduğu için bu satır ilgimi çekti. O yüzden belki yararı olabilir diye yazayım dedim :)
 

iyinet

Root
Root
İyinet Ekibi
Onaylı Üye
Katılım
2 Eylül 2002
Mesajlar
5,034
Açılan Konu
485
Tepki puanı
75
Konum
SEO
1. Sorunu sadece siz mi yaşıyorsunuz yoksa tüm ziyaretçiler içinde sorun aynı mı?
- Sadece ben : Browser sorunu
- Tüm kullanıcılar : Bir sonraki soruya

2. Site Birden fazla makina yada vps üzerinde host ediliyor mu (load balanced) ?
- Evet : Sessionlar makina bazında depolanır, sorun yaşayabilirsiniz.
- Hayır : Bir sonrakine soruya

3. /tmp dizininde yada / (kök) dizininde yeterince boş yer var mı?
- Hayır : diskte yer açın
- Evet : Bir sonrakine soruya

4.
PHP içinde Session ları nasıl tanımlıyorsunuz? Örnek veriniz.
Session management yapıyormusunuz? Yani sessionlari DB de tutuyormusunuz?
PHP versiyonu nedir? Register globals kullanıyormusunuz? Regsiter globals session değişkenlerini ezebilir.

php.ini içinde bu ayarları kontrol ediniz:

session.save_handler = files
session.save_path = /tmp
session.use_cookies = 1
session.cookie_path = /

Bunların haricinde php.ini altındaki tüm [Session] bölümünü buraya ekleyebilirsiniz.
 

CaLViN

0
Onaylı Üye
Üye
Katılım
25 Kasım 2004
Mesajlar
7,486
Açılan Konu
146
Tepki puanı
58
Konum
Antalya
oturumları depoladığınız dizin /tmp mi ?

eğer öyleyse bu dizini değiştirip tekrar aynı sorunu yaşayıp yaşamadığınız kontrol edin.
 

atay

0
Onaylı Üye
Üye
Katılım
29 Ekim 2005
Mesajlar
3,592
Açılan Konu
298
Tepki puanı
36
2. Site Birden fazla makina yada vps üzerinde host ediliyor mu (load balanced):

Tek bir makinede toplanıyor. Amd 5200 X 2 / 4GB RAM'e sahip bir sunucu. Bu sunucu böyle bir session yükünü kaldıramaz mı?

3. tmp şeklinde değil, session.save_path = "/var/lib/php/session" olarak ayarlı. şimdi tmp yapıyorum.

4.

$id=rowdan alınan id bilgisi
$_SESSION['id']=$id;

gibi tanımlıyorum, session management yapmıyorum, php versionu 5, register globals kullanıyorum.

php.ini'deki session bölgesi şu anda şu şekilde:
session.save_path=/tmp
session.save_handler = files
session.use_cookies = 1
session.cookie_path = /

-

desolate & iyinet & whmdestek: /tmp değildi, şimdi yaptım. bakalım bir değişiklik olacak mı, teşekkürler..
 
Üst