Ejecutar Scrips PHP desde una consola de Linux

Uno de mis primeros desarrollos en PHP fué un sistema de manejo de tareas pendientes para la oficina. Luego me pidieron que todas las mañanas el sistema diera aviso de las tareas sin revisión enviando un mail a cada usuario.

Lo primero que uno piensa cuando se trata de tareas lanzadas con determinada periodicidad en linux es en CRON, verdad?
El sistema en cuestión está programado en PHP4, montado sobre un Debian Sarge (Mysql 4.1, Apache 1.3), por lo que la pregunta era: ¿Cómo meter en el CRON una página dinámica?.

Bueno… simplemente instalando un intérprete de PHP para consola. Puntualmente yo utilicé el intérprete para PHP4, pero hay una versión para PHP5.

La forma de instalarlo es la más simple (la que amamos los Debianeros):

apt-get install php4-cli

Una vez instalado la forma de invocarlo es:

php4 pagina.php

Todo lo que el intérprete devolverá será visualizado en la pantalla o podemos redireccionarlo a un archivo, a un mail, etc etc etc…


Opciones del comando php4 del intérprete php4-cli

Luego de instalar el intérprete podemos configurarlo mediante el archivo /etc/php4/cli/php.ini (en mi caso, que instalé php4-cli).

Para poder utilizar Mysql tuve que descomentar la línea que dice:

extension=mysql.so

Para mandar un mail con el resultado de una Query SQL (programada en PHP) simplemente utilizas un pipe para redirigir la salida:

php4 pagina.php | mail destinatario@mail.com

El código que usé yo es un poco mas complicado ya que el mail lo envío en formato HTML.

El comando en cuestión es el que apunte en /etc/crontab. Una entrada distinta para cada usuario del sistemita (apuntando a un archivo .php distinto, ya que difería la consulta SQL).

La última variante del asunto: debido a que hay varios usuarios, creé una nueva página PHP la cual consulta en la base de datos un ID y EMAIL de cada uno, realiza la consulta SQL y envía el mail correspondiente.
De ésta forma es un solo archivo .php el cual apunté en CRONTAB y éste se encarga de enviár las consultas, sin importar si en un futuro hay más o menos cantidad de usuarios.

Espero no haberlos aburrido :)

3 respuestas a “Ejecutar Scrips PHP desde una consola de Linux”

  1. Darcy dijo:

    PHP es meramente un script interpreter glorificado, y como tal lo podes usar dentro de un script cualquiera utilizando el llamado hashbang, de esta manera:

    test.sh:
    [code]
    #! /usr/bin/php
    [/code]

    Con lo cual podes ejecutarlo como ./test.sh (vale aclarar q la salida no es HTML, a menos de q lo armes a mano)

  2. eulerss dijo:

    test.sh:
    [code]
    #! /usr/bin/php
    [/code]

    perfecto!

  3. WAMP vs LAMP | Mey Online dijo:

    [...] Ejecución de scripts PHP desde consola: al instalar PHP se dota a GNU/Linux de un intérprete de línea de comandos. Para quienes pueden resolver cualquier tarea mediante PHP es muy útil poder ejecutarloen una consola del sistema. Podemos dejar cualquier script PHP programado para que el sistema lo ejecute. Ver este post. [...]

Deja una respuesta