ทำไม SESSION ใน CodeIgniter ถึงหมดอายุเร็วมากๆ!??
งง??? อยู่นานมากๆ จำได้ว่าเคยเจอปัญหานี้เมื่อครั้งที่เริ่มใช้ CodeIgnier ใหม่ๆ (จนกระทั่งเดี๋ยวนี้ก็ยังเป็นอยู่นะ ^^;) เมื่อครั้งที่ใช้ Version 2 แค่เปลี่ยนจาก Files ไปเป็น Database ก็หาย
แต่ตอนนี้เกิดขึ้นอีกแล้วววววว >O<
สรุปแล้วก็คือเกิดจากชื่อของ SESSION มันไปตรงกันกับ project อื่นๆ แล้วในฐานข้อมูล SESSION ดันใช้ Database ตัวเดียวกัน ci_sessions
เพราะมีเหตุจำเป็นต้องใช้ฐานข้อมูลเดียวกัน
PROJECT 1 ใช้ db_project.ci_sessions
PROJECT 2 ใช้ db_project.ci_sessions เช่นกัน!!
ดังนั้นเวลาเปิดหน้าเว็บ Project 2 ก็จะเกิดการสร้าง session id ใหม่ที่ตาราง ci_sessions เดียวกัน ดังนั้นใน Project 1 ก็จะโดนตัดไปโดยปริยาย
วิธีแก้ไขปัญหานี้ก็คือ
1. หลีกเลี่ยงการใช้ Database และ Table ตัวเดียวกันในการเก็บ SESSION
2. เปลี่ยน sess_cookie_name ให้เป็นชื่อที่ไม่ซ้ำกันใน config/config.php ของแต่ละ Project
ความคิดเห็น
แสดงความคิดเห็น