Cara Membersihkan PHP Session Penyebab Inode Di Server Linux Penuh
Dalam kondisi tertentu, kadang saat menggunakan website tidak bisa untuk upload file apapun. biasanya kalau hal ini terjadi ada beberapa hal penyebabnya, bisa dari permission file ataupun disk psace yang penuh. tapi jika sudah di lakukan pengecekan keduanya dan ternyata normal semua, anda perlu mengecek dari sisi inode. bisa jadi, website anda penuh karena inode di server penuh.
Silahkan gunakan perintah berikut untuk mengecek inode server anda:
df -i
sehingga akan menghasilkan seperti berikut:
Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda2 1310720 1310720 0 100% /
Dari situ, sudah jelas bahwa penyebab masalah di server adalah inode yang penuh. Untuk mengecek lebih detail darimana penyebab penuhnya, anda bisa melihatnya lewat perintah yang ada di artikel berikut: https://hosteko.com/kb/cara-cek-besar-inode-di-server-linux/
Biasanya, penyebab inode cepat penuh berasal dari PHP SESSION. yang berlokasi di folder /var/lib/php/session dengan isi kurang lebih seperti ini: sess_*
Untuk membersihkannya, anda bisa menggunakan perintah berikut:
find /var/lib/php/session -type f -cmin +24 -name "sess_*" -exec rm -f {} \;
Tetapi kami akan merekomendasikan Anda untuk menggunakan skrip bash, agar kedepan anda tidak perlu repot lagi untuk membersihkan PHP Session:
Sebelum membuat script, periksa dahulu setting PHP anda dan ubah seperti di bawah ini:
; After this number of seconds, stored data will be seen as 'garbage' and ; cleaned up by the garbage collection process. session.gc_maxlifetime = 1440 ; NOTE: If you are using the subdirectory option for storing session files ; (see session.save_path above), then garbage collection does not ; happen automatically. You will need to do your own garbage ; collection through a shell script, cron entry, or some other method.
buat folder di /root dengan nama bebas, misal dalam hal ini saya buat nama hapusphpsession, sehingga alan terbentuk lokasi folder /root/hapusphpsession
silahkan masuk ke folder/ directory /root/hapusphpsession dan buat script berikut dengan di berinama hapus-php-session.sh
#!/bin/bash # Export bin paths export PATH=$PATH:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # Get PHP Session Details PHPSESSIONPATH=$(php -i 2>/dev/null | grep -w session.save_path | awk '{print $3}' | head -1); PHPSESSIONLIFETIME=$(php -i 2>/dev/null | grep -w session.gc_maxlifetime | awk '{print $3}' | head -1); PHPSESSIONLIFETIMEMINUTE=$( expr $PHPSESSIONLIFETIME / 60 ); # If PHPSESSIONPATH exists if [ -d $PHPSESSIONPATH ]; then # Find and delete "expired" sessions find $PHPSESSIONPATH -type f -cmin +$PHPSESSIONLIFETIMEMINUTE -name "sess_*" -exec rm -f {} \; fi
Buat cronjob dengan menjalankan perintah crontab -e dengan setting setiap jam sekali.
# Delete PHP sessions 0 * * * * root /root/hapusphpsession/hapus-php-session.sh >/dev/null 2>&1