Programación en castellano
Inicio > Taller PHP > Ejecutar scripts PHP automáticamente desde el cron con CURL
-Artículos

Ejecutar scripts PHP automáticamente desde el cron con CURL

Frecuentemente se nos presenta la necesidad de tener que programar alguna tarea diaria, semanal, etc., como un envío masivo de email, o unas consultas pesadas a nuestra base de datos; y hacerlo además en las horas de menor actividad de nuestro servidor.

Para muchos de nosotros resulta fácil programar un script con PHP que realice estas tareas, pero la mayoría de los servidores tienen solo el módulo de php instalado lo cual no nos permite ejecutar estos scripts desde la línea de comandos directamente.

La solución a este problema consiste en utilizar CURL. Este paquete viene incorporado en la mayoría de las distribuciones Linux, y en caso contrario, puede ser descargado desde esta dirección.

CURL es una herramienta para transferencia de ficheros con sintaxis URL, que envía la salida por defecto a la pantalla. Podemos hacer la siguiente prueba:

# curl http://www.google.es

También podemos reenviar la salida y guardarla en un fichero

# curl http://www.google.es > google.htm

CURL soporta diferentes protocolos: FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE, LDAP y algunos más que podéis consultar en su web. Además se instala una librería con un conjunto de funciones que pueden ser usadas desde PHP, pero esto es otra historia.

Siguiendo con nuestro caso, podemos ejecutar ahora un script PHP desde la línea de comandos, simplemente escribiendo esto:

# curl http://localhost/miscript.php

Supongamos que vamos a ejecutar un script que envía los email de nuestro boletín de correo llamado boletin.php pero éste se encuentra alojado en una carpeta protegida de nuestro servidor web. En este caso ejecutamos el script pasándole el usuario y contraseña para acceder al directorio protegido.

#curl -u username:password http://localhost/protegido/boletin.php

Para programar en el cron de nuestro Linux esta tarea y que sea ejecutada automáticamente de forma periódica debemos conocer la ruta completa donde esta instalado el curl que habitualmente suele ser en /usr/bin.

Ahora editaremos nuestro fichero de tareas de cron (por ejemplo con el comando crontab -e), y añadimos esta línea:

30 4 * * * /usr/bin/curl -u username:password  http://localhost/protegido/boletin.php

Esto hará que todos los días a las 4:30 de la madrugada se ejecute el script boletin.php de manera automática. Si se desea conocer mas información sobre la programación de tareas se puede consultar la ayuda (man crontab).

 

Últimos comentarios
Últimos 5 comentarios

cron (30/06/2009)

Por
realizar cron

cron (30/06/2009)

Por
realizar cron

Gracias (19/01/2009)

Por
Gracias por el comentario me ayudo mucho tuve un problema con el cron y este blog me ayudo

Cuidado con el timeout HTTP (02/01/2008)

Por
Esto es muy útil, pero hay que tener en cuenta el timeout de las peticiones HTTP. Si un proceso tarda mucho debido a su complejidad, el servidor Web finaliza la ejecución de la tarea por timeout. En entornos de producción no es recomendable ampliar el tiempo de ejecución en el servidor web.

Saludos.

Php - Excel (24/10/2007)

Por
Buen dia,

Hice una aplicacioncita PHP que genera un archivo excel, cuando la cargo desde un Browser (Navegado) el me pide que guarde el archivo. Quiero que esto mismo suceda en mi servidor linux.

Al ejecutar curl la respuesta es: curl: (3) malformed

Además quiero que el archivo de excel quede guardado en la misma ruta donde tengo la pagina.

Espero cualquier comentario y colaboración. Muchas Gracias.
 
Tienda
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: juegos gratis | logos y melodias | hospedaje web linux | registro de dominios | servidores dedicados
más internet: comprar | recursos gratis | posicionamiento en buscadores | decoración web | gifs animados