Para ejecutar scripts de CodeIgniter desde la línea de comandos, sigue los siguientes pasos:
1. Copia index.php en un archivo llamado cli.php.
2. Modifica cli.php, agregando este código al principio del script
[php]
<?php
/* Esta linea detecta si el script está siendo llamado
* mediante el explorador e impide su utilización
* si este es el caso.
* Con esto, nos aseguramos que solamente corra mediante
* la línea de comandos
* */
if (isset($_SERVER[‘REMOTE_ADDR’])) die(‘Permiso denegado.’);
/* Definimos que se está corriendo desde la linea de comandos
* por si lo necesitamos saber en algún script, como una
* constante
* */
define(‘CMD’, 1);
/* Utilizaremos los argumentos de la línea de comandos como los
* segmentos que utilizamos como dirección cuando utilizamos el
* explorado, pero debemos “quitar” el primero, que es el nombre
* del script “cli.php”
* */
unset($argv[0]);
/* Formamos la url con los argumentos de la línea de comandos
* */
$_SERVER[‘QUERY_STRING’] = $_SERVER[‘PATH_INFO’] = $_SERVER[‘REQUEST_URI’] = ‘/’ . implode(‘/’, $argv) . ‘/’;
[/php]
¡Listo! Ahora podemos llamar a los scripts desde la ruta de comandos, llamando a php y pasandole como parámetros el nombre del script ( cli.php ), luego el nombre del controlador, luego el nombre de la función y posteriormente los segmentos necesarios, si los hay. Esta es la sintaxis:
[bash]
php cli.php <controlador> <funcion> [<segmento1> … <segmentoN>]
[/bash]
Ejemplo: Supongamos que el script de code igniter que queremos correr es la funcion “enviar” del controlador “mensajes”. Desde el explorador lo llamaríamos así:
[html]
<site_url>/mensajes/enviar
[/html]
Desde la línea de comandos debemos llamar:
[bash]
php cli.php mensajes enviar
[/bash]
¿Fácil no? Con este método podemos programar la ejecución de scripts que utilicen CodeIgniter mediante Cron Jobs, sin mayor problema. Bastante util para seguir usando el mismo framework si tu aplicación web está programada con CodeIgniter.
admin
February 7, 2013
Uncategorized
No Comment