Sorum, doğru bir şekilde çözdüğümü düşünmediğim eski bir sorundan ilham alıyor. Dizi bilgilerini kısa bir süre sonra eriştiğim bir Joomla oturumunda saklıyordum. Ayarladığım Joomla değişkeninin zaman zaman eksik olduğunu gördüm.
İlgilenmek için orijinal sorunumu https://stackoverflow.com/questions/13052495/how-to-prevent-race-conditions-when-writing-reading-joomla-session-variables-fr =
Yine de aynı soruyu sormayacağım, bunun yerine aşağıdaki ilgili soruların cevaplarını almayı umuyordum.
Gördüklerime dayanarak, oturum verilerinin "kaybolması" için birkaç yol vardır.
İlk yol, insanların daha önce bahsettikleri veya önerdikleri şeydir. Burada oturum zamanlayıcısı sınırına ulaşırsınız. Oturum zamanlayıcısına ulaşıldığında, oturum bellekten silinir.
Oturumu kapattığınızda, oturum verileriniz temizlenir. Hangi oturum kapatma işlevinin çağrıldığına ve Joomla'nın hangi sürümüne bağlı olduğuna bağlıdır. Sadece Joomla Session bölümünün silindiği bazı durumlar gördüm. Ayrıca $ _SESSION global değerinin tamamının temizlendiği örnekleri de gördüm.
Ayrıca Joomla API'leri aracılığıyla oturum verilerini depolamaya çalışmanın bazı örneklerini hiç bir şey saklamaz ya da beklemediğiniz bir yerde saklar. Bir oturum değişkeni ayarladıktan sonra, oturumun ayarlandığından ve nerede olduğunu düşündüğünüzden emin olmak için dökümü yapın.
Bu, rastgele eksik oturum verileri için daha yaygındır. Bu, www/www olmayan veya http/https sınırına ulaştığınız zamandır. Apache (Joomla siteleri için birincil web sunucusu) bazen aynı tarayıcı www/www olmayan veya http/https sınırını geçtiğinde karışır. Bazı kurulumlar iyi idare ediyor, diğerleri değil ama oldukça yaygın. İşte ilginç kısmı, o köprüyü geçtikleri ana bağlantı olması bile gerekmiyor, www/non- Soruna neden olabilecek www veya http/https köprüsü. Bu günlerde çok nadir görülür ama bunu birden fazla sitede gördüm.
Bu davranışı gösterebilecek yarasayı düşünebilmemin tek yolu bunlar.
Başka bir olasılık, oturum verilerinin dil karakterleri nedeniyle kesilmiş olmasıdır. Db'de saklanıyorsa, oturum verilerinin tamamlandığını kontrol edin (düzgün şekilde eklenmiş {}).
Örneğin, oturum Montréal'i saklamaya çalışırsa, Montr'a kısaltılabilir. Montr'dan sonraki her şey kaybolur ve oturum verileri artık güncellenebilir.