El siguiente es el manual para administradores de la aplicación Console.
La aplicación contiene soporte para la ejecución del sitio a través de la consola. Adicionalmente, incluye soporte para ejecutar tareas programadas (cron jobs).
Se incluyen comandos básicos para una consola, a saber:
list lista todos los comandos disponibles (o informados) de todas las aplicaciones.
cron ejecuta el manejador de tareas programadas.
Contiene una librería del tipo fragmento (snippet), que facilita producir salidas. Por ejemplo, muestra un conjunto de datos en una tabla, a partir de un arreglo.
Básicamente, es una librería que permite decidir si una tarea debe o no ser ejecutada, dependiendo del momento en que es llamada.
El punto de entrada para ejecutar el framework a través de una consola, es el archivo console. El archivo puede ser ejecutado en cualquier lugar del sitio, por lo general se utiliza la carpeta bin/ ubicada fuera de la carpeta pública.
Lo único que debe hacer es asegurarse de que se incluya correctamente el archivo bootstrap.php:
include '../public/bootstrap.php';
En la consola, se debe apuntar a la carpeta bin/ y ejecutar:
php console
Importante! la directiva register_argc_argv de php debe estar habilitada.
El modo en que se accede a las aplicaciones es similar al de la web. Es decir, se debe pasar la ruta component/task, sólo que es posible reemplazar la barra / por los dos puntos :, o incluso, por un espacio ' '.
Note que no se pasa el punto de acceso (access_point), ya que el framework entiende que el punto de acceso es el archivo que se ejecuta, por lo tanto, si reemplazamos el nombre del archivo bin/console, por bin/terminal, estamos diciendo que el punto de acceso será el de terminal.
La aplicación por defecto será console, por lo tanto, no es necesario incluirla en la ruta. Los siguientes ejemplos tienen la misma salida:
php console console:list
php console list
La aplicación incluye algunos comandos básicos para una consola.
Crea una lista con los comandos disponibles (o informados) de todas las aplicaciones.
Para agregar comandos a la lista, se debe crear un plugin de nombre console-help, y, en el gancho load, se debe incluir un contenido similar a:
return function(ConsoleHelpCollector &$collector)
{
$collector->title('Title')
->command('command_1', 'A summary text.')
->command('command_2', 'A summary text.');
}
Por el momento, la aplicación contiene sólo el fragmento console, que facilita generar salidas.
Facilita generar una salida.
$console = Snippets::get('console');
$console->line('Hello word!');
$console->display();El manejador de tareas programadas permite concentrar las tareas de cron en un único punto, y desde allí, administrar y ejecutar las tareas programadas.
Las ventajas son:
crontab.
Para ejecutar las tareas programadas en nuestro servidor, depende en gran medida del servidor en sí. Sin perjuicio de ello, el código será similar a:
* * * * * /path/to/bin/php /path/to/console cron >/dev/null 2>&1
en donde los argumentos corresponden a:
Una expresión de cron que indique la frecuencia de ejecución. Para los fines prácticos, mantenga la expresión * * * * *, es decir, cada un minuto.
La ruta al ejecutable de php que procesará el pedido.
La ruta al archivo a ejecutar, en nuestro caso: console.
La tarea a ejecutar dentro de nuestra aplicación, para nosotros: cron.
En nuestro ejemplo, silenciamos la salida.
Importante! la directiva register_argc_argv de php debe estar habilitada.
En algunos servidores compartidos, la directiva register_argc_argv no está habilitada y no hay modo de hacerlo desde php.ini. En estos casos, es posible ejecura la opción -d en la línea de comando.
* * * * * /path/to/bin/php -d register_argc_argv=On /path/to/console cron >/dev/null 2>&1
Las tareas se definen como un plugin de nombre console-cron. En un archivo de gancho exec se debe escribir un código similar a:
return function(ConsoleCron &$cron)
{
$cron->on('* * * * *')?->call(function() {
// the task
});
}
Verifica que una expresión Cron corresponda con la hora actual. Devuelve el objeto para el caso de que corresponda o, de lo contrario, retorna null.
public ConsoleCron::on ( string $expression ): ConsoleCron|null
Una expresión Cron válida.
Ejecuta una llamada de retorno.
public ConsoleCron::call ( callable $callback )
La función de retorno que ejecuta la tarea programada.
Valida una expresión Cron.
public ConsoleCron::validate ( string $expression ): bool
La expresión Cron a validar.
La ruta para acceder a las configuraciones de Cron es Administración > Configuraciones > Herramientas > Consola > Cron.
Seleccione los plugins de tareas que desea habilitar.