Files
module-custom/clear_sessionDB_odoo.txt
2026-05-31 15:35:57 +07:00

82 lines
3.4 KiB
Plaintext

Untuk menghapus session yang tersimpan di database setiap malam secara otomatis, cara terbaik dan paling efisien adalah dengan memanfaatkan **Cron Job** pada level *database server* (PostgreSQL) atau melalui fitur **Scheduled Actions** bawaan Odoo.
Karena Anda menggunakan modul `session_db`, semua data session lama yang sudah kedaluwarsa (*expired*) akan menumpuk di salah satu tabel database (biasanya bernama `session_db_session` atau `ir_session`).
Berikut adalah 2 metode otomatis yang bisa Anda gunakan:
---
### Metode 1: Menggunakan Scheduled Actions Odoo (Paling Direkomendasikan)
Sebagian besar modul `session_db` dari OCA atau komunitas sudah menyediakan fungsi *cleanup* (pembersihan) otomatis yang terintegrasi dengan fitur **Scheduled Actions (Automated Actions)** Odoo.
1. Masuk ke Odoo menggunakan akun **Administrator**.
2. Aktifkan **Developer Mode** (Mode Pengembang).
3. Buka menu **Settings** > **Technical** > **Automation** > **Scheduled Actions**.
4. Cari aksi yang bernama seperti:
* `Session: Cleanup expired sessions`
* `Session DB: Purge sessions`
* *(Atau cari dengan kata kunci "session" di kolom pencarian)*.
5. Klik aksi tersebut, lalu ubah konfigurasinya:
* **Execute Every:** `1 Days`
* **Next Execution Date:** Atur ke jam yang Anda inginkan (misal nanti malam jam `00:00:00`).
* **Active:** Pastikan dalam posisi *True* (Centang).
> 💡 **Kelebihan:** Metode ini sangat aman karena Odoo akan menghapus session berdasarkan umur kedaluwarsa yang logis, sehingga pengguna yang sedang aktif tidak akan tiba-tiba ter-log out.
---
### Metode 2: Menggunakan Cron Job Script (Eksternal / Sisi Host)
Jika modul yang Anda gunakan tidak menyediakan Scheduled Actions, atau Anda ingin memastikan database benar-benar bersih total setiap jam 12 malam tanpa membebani *resource* aplikasi Odoo, Anda bisa membuat Cron Job langsung di server Linux (*host* tempat Docker berjalan).
#### Langkah 1: Buat Script Pembersih
Buat file baru di server Anda, misalnya bernama `/opt/cleanup_odoo_session.sh`:
```bash
#!/bin/bash
# Perintah untuk mengosongkan tabel session via Pgpool/Postgres Docker
# Ganti 'odoo_db' dengan nama database Odoo Anda yang sebenarnya
docker exec -i $(docker ps -q -f name=pgpool) psql -U odoo -d odoo_db -c "DELETE FROM session_db_session WHERE write_date < NOW() - INTERVAL '1 day';"
```
*(Catatan: Sesuaikan nama tabel `session_db_session` dan kolom `write_date` dengan struktur tabel yang dibuat oleh modul Anda. Jika ingin menghapus **semua** session tanpa pandang bulu, Anda bisa menggunakan perintah `TRUNCATE TABLE nama_tabel;`)*.
#### Langkah 2: Beri Izin Akses Script
```bash
chmod +x /opt/cleanup_odoo_session.sh
```
#### Langkah 3: Daftarkan ke Crontab Linux
1. Buka terminal server Anda dan ketik:
```bash
crontab -e
```
2. Tambahkan baris berikut di bagian paling bawah file untuk menjalankan script **setiap malam jam 00:00**:
```text
0 0 * * * /opt/cleanup_odoo_session.sh > /dev/null 2>&1
```
3. Simpan dan keluar.
---
### ⚠️ Catatan Penting Sebelum Eksekusi:
* **Efek Samping:** Jika Anda menggunakan perintah hapus total (`TRUNCATE`), semua pengguna (termasuk Anda) yang sedang membuka Odoo di HP atau laptop otomatis akan ter-log out (keluar) dan harus melakukan login ulang keesokan paginya.
* **Cek Nama Tabel:** Pastikan Anda memeriksa nama tabel session Anda terlebih dahulu melalui *Database Manager* atau pgAdmin. Nama tabel umum untuk modul ini adalah `session_db_session`, `ir_session`, atau `res_users_session`.