Aplicaciones de Consola en Yii2


Aplicaciones de Consola en Yii2

Introducción a la utilización de aplicaciones de consola en Yii2.


¿Que es una aplicación de consola?


Las aplicaciones de consola, no es más que un script Yii2 que puede ser ejecutado desde consola, es decir no necesita estar público y se puede ejecutar mediando un comando de shell en Linux o cmd en Windows.

Cuando instalamos Yii2 habrás notado que hay siempre una carpeta que nos deja siempre llamada: "commands" y dentro encontraras un archivo llamado "HelloController.php", pues bien éste archivo es un ejemplo de un controller de consola.

Ejecutando un ejemplo de HelloController

Para ejecutar un ejemplo deberás tener acceso a la shell en el caso de Linux o cmd en el caso de Windows.

Para comprobar el funcionamiento de ejemplo que trae Yii2 puedes ejecutar el siguiente comando desde el shell, de la siguiente manera:

php [ruta raiz proyecto]yii hello 

Ejemplo en linux:

php /home/folderexample/app/yii hello

La palabra "php" es el comando nativo de php para ejecutar scripts desde consola.
El segundo parámetro es la ruta completa raíz del proyecto. Recuerda que los comandos de consola pueden ser ejecutados desde cualquier ruta ó por un cron job por lo que siempre se usa la ruta completa.
El tercer parámetro es el nombre del controller. 


Deberá  que ver en la consola un mensaje que dice: 

hello world



Explicación paso a paso:

php --> Ejecuta un comando php desde consola.
/home/folderexample/app/yii --> Ejecuta el comando con la consola de Yii, observa que la ruta será la ruta de tu aplicación en linux.


¿Cómo crear un nuevo Controller?

Puedes crear un archivo php nuevo o puedes tomar como ejemplo el archivo de "HelloController.php" de manera muy similar a un controller normal de Yii2 deberás de anteponer el nombre del controller como tu quieras al igual que un controller normal,  y al final escribir en el nombre del controller la palabra, por ejemplo: "MiClaseController.php" con esto ya se reconoce como que es un controller.

En el siguiente ejemplo puedes ver de manera muy básica cómo puedes usarlo.

Nombre del archivo de ejemplo:

commands/MiAplicacionesConsola.php

Nota importante: El nombre de la clase y el nombre del archivo deben terminar con la palabra reservada "Controller" ya que con ésta, al igual que los controllers web, es la que identifica el nombre del controlador en el momento de ejecutarlo, si no está bien escrito no será reconocido como un controller y saldra un error como: "Unable to resolve the request"


namespace app\commands; //Namespace que indica que es un commands

use yii\console\Controller; // Importante incluir la clase para extender de /console/Controller

use yii\console\ExitCode;


class MiAplicacionConsolaController extends Controller {


    public function actionIndex($parametro = 'Esta es mi propia aplicación de consola') {
        echo $parametro . "\n";
    }

}


Para ejecutar el controller en linux, en este caso tendrías que ejecutarlo de esta manera:


php /home/folderexample/app/yii mi-aplicacion-consola

Para ejecutar el controller en windows en un entorno de desarrollo local, en este caso tendrías que ejecutarlo de esta manera, considerando que estas en la carpeta raíz de tu proyecto, ejemplo: "c:\xampp\htdocs\folderexample"



c:\xampp\htdocs\folderexample>yii mi-aplicacion-consola

Observa que no estamos mandando ningún parámetro por lo que bastará con solo poner el nombre del controller y si tu action se llama "actionIndex" entrará por defecto al igual que los controllers web. 


Con lo cual te mostrará el siguiente mensaje en consola

Esta es mi propia aplicación de consola


Agregar un Cron Job en linux

Probablemente quieras que tu command pueda ser ejecutado por un Cron Jon, para éste puedes agregar en un Cron Job la ejecución del comando

"/home/folderexample/app/yii mi-aplicacion-consola"

Te recomiendo revisar los permisos del archivo llamado myApp/yii

Debe tener permisos de ejecución o puedes ejecutar este comando para darle los permisos correctos. 

chmod +x yii

Actualizado: 10-Septiembre-2021


Fuentes:

https://www.yiiframework.com/doc/guide/2.0/en/tutorial-console



Comentarios

Aprende Yii2


Lo más Visto

Guía rápida para uso de widget kartik para select para formulario

Cómo incluir una vista dentro de un modal

Tutorial de implementación de calendario de rango de fechas con Karkit en gridView

Google Plus desaparecerá el 4 de Abril de 2019

Crear fomulario HTML con checkbox sin Active Record

hostinger

ventana bienvenida