Laravel ลบ Session ที่หมดอายุใน Database
1. ตรวจสอบว่าคุณใช้ SESSION_DRIVER=database
เปิดไฟล์ .env และตรวจสอบว่าใช้ Database เก็บ Session
"
SESSION_DRIVER=database
SESSION_LIFETIME=120 # 120 นาที (2 ชั่วโมง)
"
* Laravel จะเก็บ Session ในตาราง sessions
2. เพิ่ม Prunable ใน Model Session
2.1. สร้าง Model Session.php (ถ้ายังไม่มี)
" php artisan make:model Session "
2.2. แก้ไขไฟล์ app/Models/Session.php
[CODE]
3. ใช้คำสั่ง model:prune เพื่อลบ Session ที่หมดอายุ
รันคำสั่งนี้เพื่อลบ Session ที่หมดอายุ
" php artisan model:prune "
ผลลัพธ์:
- Laravel จะลบ Session ที่ last_activity หมดอายุ
- ไม่มีผลกระทบกับ Session ที่ยังใช้งานอยู่
4. ตั้ง CRON Job หรือ Task Scheduler ให้ลบ Session อัตโนมัติ
ตั้ง CRON Job ให้รัน model:prune ทุกชั่วโมง
เปิด Terminal แล้วพิมพ์
" crontab -e "
เพิ่มบรรทัดนี้ (ให้ลบ Session ทุกชั่วโมง)เพิ่มบรรทัดนี้ (ให้ลบ Session ทุกชั่วโมง)
" * * * * php /path/to/artisan model:prune >> /dev/null 2>&1 "
Session จะถูกลบอัตโนมัติทุกชั่วโมง