Configurar el modo mantenimiento en CodeIgniter

El modo mantenimiento mejora la experiencia del usuario mostrando una notificación cuando el sitio web está en mantenimiento. Cuando la web necesita una actualización, siempre es buena idea mostrar una página de mantenimiento bien diseñada en lugar de mostrar un error en la web.

CodeIgniter no cuenta con una función por defecto para configurar una página de mantenimiento. Pero siempre hay que buscarse las mañas para hacerlo, y en CodeIgniter no es nada complicado. En este tutorial te mostraremos cómo poner tu web en modo mantenimiento.

Los hooks de CodeIgniter te proporcionan la habilidad de modificar la función del núcleo sin tener que modificar los archivos. Puedes configurar una página de mantenimiento o una página de “En construcción” mediante los hooks de CodeIgniter.

Sigue las siguientes instrucciones para poner tu web en modo mantenimiento.

Habilitar los hooks

Lo primero que tienes que hacer es habilitar los hooks. Para ello edita el fichero application/config/config.php y pon la variable $config['enable_hooks'] a TRUE.

$config['enable_hooks'] = TRUE;

Definir el modo mantenimiento

Edita el fichero application/config/config.php y define una nueva variable para el modo mantenimiento. Inserta el siguiente código al final del config.php

/*
|--------------------------------------------------------------------------
| 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;

Definir el hook del modo mantenimiento

Para que el sistema reconozca el modo mantenimiento, edita el fichero application/config/hooks.php y define el hook.

  • pre_system: Llamaremos a este hook al inicio de cada ejecución.
  • class: Nombre de la clase que desea invocar
  • function: El nombre del método que desea llamar
  • filename: El nombre del archivo que contiene la clase/función
  • filepath: Nombre del directorio que contiene el script del hook
$hook['pre_system'][] = array(
    'class'    => 'maintenance_hook',
    'function' => 'offline_check',
    'filename' => 'maintenance_hook.php',
    'filepath' => 'hooks'
);

Clase maintenance

Crea un nuevo archivo de hook llamado maintenance_hook.php en la carpeta application/hooks/ y programa el script de mantenimiento. El siguiente código verifica si el modo de mantenimiento del sitio está activado y carga la página de mantenimiento desde la carpeta de vistas de la aplicación.

<?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;
            }
        }
    }
}

 

Página de mantenimiento

Para mostrar una página de mantenimiento bien diseñada, creea un archivo maintenance.php en el directorio application/views/ e inserta el siguiente HTML.

<?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>

Habilitar/deshabilitar el modo mantenimiento

Ahora puedes habilitar el modo mantenimiento (offline) poniendo a true la variable maintenance_mode y deshabilitarlo poniéndolo a false.

 

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP