Mode Maintenance di CodeIgniter

Daripada menampilkan error saat melakukan perubahan atau update aplikasi web menggunakan CodeIgniter, alangkah lebih baik jika kita memberi tahu user bahwa web sedang dalam pemeliharaan (maintenance).

Secara default, CodeIgniter tidak mempunyai fitur khusus untuk setting mode maintenance. Tapi kita bisa menggunakan hooks untuk menambahkan fitur tersebut.

Edit di application/config/config.php dan ubah setting hooks ke TRUE.

$config['enable_hooks'] = TRUE;

Masih di application/config/config.php, tambahkan di baris paling bawah config baru untuk mode maintenance yang akan kita gunakan.

$config['maintenance_mode'] = TRUE;

Edit file application/config/hooks.php dan tambahkan script berikut.

$hook['pre_system'][] = array(
    'class'    => 'maintenance_hook',
    'function' => 'offline_check',
    'filename' => 'maintenance_hook.php',
    'filepath' => 'hooks'
);

Script ini menggunakan parameter pre_system, jadi hook nya akan diakses sesaat sebelum aplikasi dijalankan. Untuk parameter lain bisa dicek di dokumentasinya.

Buat file baru di application/hooks/maintenance_hook.php.

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

class Maintenance_hook
{
    public function offline_check()
    {
        include(APPPATH . 'config/config.php');

        if (isset($config['maintenance_mode']) && $config['maintenance_mode'] === TRUE) {
            include(APPPATH . 'views/maintenance.php');
            exit;
        }
    }
}

Buat view baru di application/views/maintenance.php untuk menampilkan tampilan/pesan ke user bahwa web sedang maintenance.

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="utf-8">
    <title>Maintenance</title>
</head>

<body>
    <h2>Website sedang dalam pemeliharaan</h2>
    <p>Saat ini website sedang offline untuk kebutuhan pemeliharaan sistem</p>
</body>

</html>

Selesai. Jika kita set $config['maintenance_mode'] = FALSE maka aplikasi akan berjalan dengan normal dan jika di set $config['maintenance_mode'] = TRUE maka aplikasi hanya akan menampilkan tampilan maintenance.


Sumber

Leave a Reply