How To Setup Maintenance Mode in CodeIgniter

Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInPin on PinterestPrint this pageEmail this to someone

Maintenance mode helps to improve user experience by showing a notification when the site is going through maintenance. When the web application needs an update, it’s always a good idea to display a well-designed maintenance page instead of showing error on the website.

CodeIgniter, itself doesn’t provide any functionality to setup maintenance mode. But there are many ways display a maintenance page in CodeIgniter. we will show you how to put the site in maintenance mode in CodeIgniter.

CodeIgniter’s Hooks feature provides an ability to modify the core functionality without modifying the core files. You can easily setup maintenance page or under construction page using hooks in CodeIgniter.

Follow the below step-by-step guide to put your site in offline mode for maintenance in CodeIgniter.

Enable Hooks
First all you need to enable hooks. Edit the application/config/config.php file and set $config[‘enable_hooks’] to TRUE.

1
$config['enable_hooks'] = TRUE;

Define Maintenance Config
Edit the application/config/config.php file and define a new config variable for maintenance mode. Insert the following code at the bottom of the config.php file.

1
2
3
4
5
6
7
8
9
10
11
12
/*
|--------------------------------------------------------------------------
| Maintenance Mode
|--------------------------------------------------------------------------
|
| For whatever reason sometimes a site needs to be taken offline.
| Set $config['maintenance_mode'] to TRUE if the site has to be offline
|
| $config['maintenance_mode'] = TRUE; // site is offline
| $config['maintenance_mode'] = FALSE; // site is online
*/
$config['maintenance_mode'] = TRUE;

Defining Maintenance Hook
To let the system know about the maintenance hook, edit the application/config/hooks.php file and define hook.

pre_system – Hook point. The hook will be called very early during system execution.
class – The name of the class wish to invoke.
function – The method name wish to call.
filename – The file name containing the class/function.
filepath – The name of the directory containing hook script.

Maintenance Hook Class
Create a new hook file called maintenance_hook.php in the application/hooks/ folder and write Maintenance hook script. The following code checks whether site maintenance mode is ON and load the maintenance page from application views folder.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
 * Check whether the site is offline or not.
 *
 */
class Maintenance_hook
{
    public function __construct(){
        log_message('debug','Accessing maintenance hook!');
    }
   
    public function offline_check(){
        if(file_exists(APPPATH.'config/config.php')){
            include(APPPATH.'config/config.php');
           
            if(isset($config['maintenance_mode']) && $config['maintenance_mode'] === TRUE){
                include(APPPATH.'views/maintenance.php');
                exit;
            }
        }
    }
}
?>

Maintenance Page
To display a well-designed maintenance page, create a maintenance.php file in the application/views/ directory and insert the HTML.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php defined('BASEPATH') OR exit('No direct script access allowed'); ?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Site Under Maintenance</title>
    <link href="http://localhost/codeigniter/assets/css/style.css" rel="stylesheet" type="text/css" />
</head>
<body class="bg">
    <h1 class="head text-center">Site Under Maintenance</h1>
    <div class="container">
        <div class="content1">
            <img src="http://localhost/codeigniter/assets/images/2.png" alt="under-construction">
            <p class="text-center">Sorry for the inconvenience. To improve our services, we have momentarily shutdown our site.</p>
        </div>
    </div>
</body>
</html>

Enable/Disable Maintenance Mode
Now you can enable the maintenance mode (offline) by settings $config[‘maintenance_mode’] = TRUE; To disable the maintenance mode (online), change it to $config[‘maintenance_mode’] = FALSE;

READ  PayPal Payment Gateway Integration in CodeIgniter
Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInPin on PinterestPrint this pageEmail this to someone

Leave a Reply

Your email address will not be published. Required fields are marked *