Herramientas Informaticas

Mes: junio 2024

Modificar el tiempo de espera de ejecución de Codeigniter 4.5.3

En ciertas ocasiones es necesario correr algunos procesos en nuestro sistema web que demoran un poco mas de tiempo y por la configuración inicial del framework este proceso no finaliza.

Para ello es necesario poder modificar los parámetros de tiempo de ejecución para darle un poco mas de tiempo al programa y finalice correctamente los procesos.

En las primeras versiones de Codeigniter 4 podíamos cambiar el tiempo de ejecución en app/Config/App.php modificando las siguientes variables

    /**
     * --------------------------------------------------------------------------
     * Session Expiration
     * --------------------------------------------------------------------------
     *
     * The number of SECONDS you want the session to last.
     * Setting to 0 (zero) means expire when the browser is closed.
     *
     * @deprecated use Config\Session::$expiration instead.
     */
    public int $sessionExpiration = 72000;

   /**
     * --------------------------------------------------------------------------
     * Session Time to Update
     * --------------------------------------------------------------------------
     *
     * How many seconds between CI regenerating the session ID.
     *
     * @deprecated use Config\Session::$timeToUpdate instead.
     */
    public int $sessionTimeToUpdate = 300000;

    /**
     * --------------------------------------------------------------------------
     * CSRF Expire
     * --------------------------------------------------------------------------
     *
     * The number in seconds the token should expire.
     *
     * @deprecated Use `Config\Security` $expire property instead of using this property.
     */
    public int $CSRFExpire = 720000;

Pero ahora en las versiones nuevas tenemos que modificar en el archivo app/Config/Session.php ya las variables son las siguientes:

    /**
     * --------------------------------------------------------------------------
     * Session Expiration
     * --------------------------------------------------------------------------
     *
     * The number of SECONDS you want the session to last.
     * Setting to 0 (zero) means expire when the browser is closed.
     */
    public int $expiration = 720000;

    /**
     * --------------------------------------------------------------------------
     * Session Time to Update
     * --------------------------------------------------------------------------
     *
     * How many seconds between CI regenerating the session ID.
     */
    public int $timeToUpdate = 300000;

Ya con eso podemos alargar el tiempo de ejecucion del sistema, pero vamos a sacrificar que el sistema deje de estar disponible para otra tarea mientras se este ejecutando tal proceso

Problema con la ejecución de Seeders en Codeignter 4

Una de las ventajas de trabajar en el framework de codeigniter 4 son las migraciones, es decir, en lugar de crear la tabla directamente creamos los archivos de migración y cuando actualicemos los fuentes desde nuestra maquina al servidor basta con correr un php spark migrate y los campos y tablas nuevas se actualizan instantáneamente en servidor de base de datos de nuestro servidor.

En los archivos de base de datos o de migración de de dos tipos que son los siguientes

  • Migration
  • Seeds

Los archivos de migración en resumen es para poner tablas y campos nuevos mientras que los archivos seeds son para insertar datos a la tabla, en nuestro caso permisos, menus ETC

Según teníamos entendido que los seeders se ejecutaban también con el comando de php spark migrate, pero al parecer no se ejecuto en el servidor el motivo era por que tenia errores, pero no los mostro el comando.

Lo que se tuvo que hacer fue correr el siguiente comando

php spark db:seed

A continuación nos solicitara el nombre del archivo seed

CodeIgniter v4.5.1 Command Line Tool - Server Time: 2024-06-24 09:19:25 UTC-07:00

Nombre de semilla :

Le ponemos el nombre de la semilla en nuestro caso es nuestro archivo se llama PermissionNotaCreditoSeeder.phpl a clase se llama igual solo que sin la extension .php quedaria de la siguiente forma y le damos enter en caso de que el archivo contenga un error nos los mostrara, en nuestro caso como todo nos salió bien nos arrojo este mensaje

El contenido del archivo seed era el siguiente

<?php

namespace App\Database\Seeds;

use CodeIgniter\Config\Services;
use CodeIgniter\Database\Seeder;
use Myth\Auth\Entities\User;
use Myth\Auth\Models\UserModel;
use julio101290\boilerplate\Models\MenuModel;

class PermissionNotaCreditoSeeder extends Seeder {

    /**
     * @var Authorize
     */
    protected $authorize;

    /**
     * @var Db
     */
    protected $db;

    /**
     * @var Users
     */
    protected $users;

    //protected $menu;

    public function __construct() {
        $this->authorize = Services::authorization();
        $this->db = \Config\Database::connect();
        $this->users = new UserModel();
    }

    public function run() {

        $this->authorize->createPermission('listaNotaCredito-permission', 'Permiso para la lista de notas de crédito');
        $this->authorize->addPermissionToGroup('listaNotaCredito-permission', 'admin');
        $this->authorize->addPermissionToUser('listaNotaCredito-permission', 1);
        
    }
}

Creado con WordPress & Tema de Anders Norén