İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

sessionlar kendi kendine siliniyor

atay

0
İyinet Üyesi
Katılım
29 Ekim 2005
Mesajlar
3,592
Reaction score
37
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
İyinet Üyesi
Katılım
16 Şubat 2005
Mesajlar
129
Reaction score
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
İyinet Üyesi
Katılım
29 Ekim 2005
Mesajlar
3,592
Reaction score
37
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
İyinet Üyesi
Katılım
16 Şubat 2005
Mesajlar
129
Reaction score
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
İyinet Üyesi
Katılım
29 Ekim 2005
Mesajlar
3,592
Reaction score
37
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
İyinet Üyesi
Katılım
29 Ekim 2005
Mesajlar
3,592
Reaction score
37
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.
 

desoLate

0
İyinet Üyesi
Katılım
14 Haziran 2006
Mesajlar
220
Reaction score
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
Admin
Hosting Firması
Katılım
2 Eylül 2002
Mesajlar
5,030
Reaction score
73
Konum
Sakarya
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
İyinet Üyesi
Katılım
25 Kasım 2004
Mesajlar
7,486
Reaction score
63
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
İyinet Üyesi
Katılım
29 Ekim 2005
Mesajlar
3,592
Reaction score
37
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..
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Üst