Rutarelativa

Publicidad

Anotaciones reducidas

  • La vida en un día: Película de un día en la Tierra La vida en un día: Película de un día en la Tierra

    La vida en un día -Life in a day- es una película hecha por los propios usuarios de Youtube, que durante el día 24 de Julio del 2010 grabaron las cosas que pasaban en su vida durante ese día, y el director Kevin McDonald ha reunido en forma de película de un día en la Tierra.

    De una hora y media de duración, veremos todo tipo de escenas en todas las partes del mundo, con una emotiva visión del mundo real tanto con sus cosas bellas y buenas, como con la más cruda visión del ser humano y su realidad.

    [La vida en un día: Película de un día en la Tierra]

  • Video: Las posibilidades de Kinect Video: Las posibilidades de Kinect

    Cuando oímos hablar de Kinect, no podemos evitar pensar en un "simple" aparato de detección de movimientos para videojuegos, y en cierto modo es así.

    Lo bueno es que Microsoft ha lanzado una SDK de Kinect para que los usuarios puedan crear aplicaciones que exploten las capacidades del dispositivo, dando lugar a miles de ideas.

    El siguiente video es al fin y al cabo con fines publicitarios, pero nos da que pensar acerca de las aún sin explotar posibilidades de Kinect. Disfrutadlo.

    [Video: Las posibilidades de Kinect]

  • La historia de los Exploradores Web La historia de los Exploradores Web

    Desde prácticamente los comienzos de Internet los Exploradores Web o Navegadores web nos han acompañado, haciendo las veces de herramientas indispensables para una navegación que a cada año que pasa se hace más cómoda y más intuitiva.

    En Testking encuentro una imágen que contiene un gran esquema de la historia de los Exploradores Web desde el primer Nescape en 1994 hasta los navegadores modernos de este año 2011.

    Una imágen interesante para conocer cuál ha sido la evolución en éste área.

    [La historia de los Exploradores Web]

Últimos comentarios

  • Avatar del usuario Alberto Alberto Hola Sergio, Excelente tu post, llegué a ti debido que quiero...
  • Avatar del usuario aiko aiko Hola, yo uso esta calculadora saber cuánto para enviar y recibir:...
  • Avatar del usuario Samir Jalabe Samir Jalabe Buenas quien me ayuda hacer un rombo en Php por favor de antemano...
  • Avatar del usuario andres andres y como los recibes en javascript?
  • Avatar del usuario sdasdas sdasdas WINDOWS 7 ---> C:\Program Files\Common Files\Adobe\OOBE\PDApp\UWA
  • Avatar del usuario Mariano Fuenzalida Mariano Fuenzalida Disculpa, cuando despliego el menú de ayuda en photoshop...
  • Avatar del usuario Metztli Metztli Ese código de php, ¿funciona para magento?
  • Avatar del usuario daniel daniel Buenas tardes quisiera saber como se escribe mi nombre...
  • Avatar del usuario Omar Omar Hola: Estoy rehaciendo mi web que es un gran catálogo y quiero...
  • Avatar del usuario carlos carlos muchas por tu aporte

Lo más comentado

Lo más visto

Post al azar

Como ejecutar task de Symfony automáticamente con cron

(2)
14 / Mayo / 2010
Como ejecutar task de Symfony automáticamente con cron

En el último proyecto que estoy desarrollando he tenido la necesidad de que se ejecutara una tarea cada cierto tiempo, por ejemplo para contabilizar las visitas que he tenido hasta una hora concreta, o realizar alguna tarea de mantenimiento, etc. En Linux existe cron, que es un administrador de procesos en segundo plano, encargado de ejecutar los procesos que nosotros le hayamos configurado en un tiempo determinado. En nuestro ejemplo lanzaremos una tarea todos los días a las 24 horas.

Parte 1 – Como crear una tarea en Symfony

Una tarea de Symfony no es mas que un script en el directorio lib/task de nuestro proyecto, pero de esta forma contaremos con todos los objetos que nos ofrece Symfony para poder desarrollarlo. Además de poder ejecutarlo como un comando más de Symfony, llamándolo desde la consola con php symfony “tarea”. Las únicas restricciones de crear una tarea en Symfony es de que tendrá que heredar de sfBaseTask y de que el nombre de la tarea se llamara nombreTask.class.php, para su funcionamiento.

Para crear una tarea en Symfony nos posicionaremos en el directorio raíz de nuestro proyecto e introduciremos:

symfony generate:task namespace:task

Remplazaremos namespace y name por el nombre que deseemos que tenga nuestra tarea por ejemplo:

symfony generate:task mantenimiento:estadisticas

Editaremos nuestra tarea creada en lib/task/estadisticasTask.class.php

class estadisticasTask extends sfBaseTask
{
    protected function configure()
    {
        $this->namespace = "mantenimiento";
        $this->name = "estadisticas";
    }
 
    protected function execute()
    {
        $this->log("Hola soy el task estadisticas");
    }
}

Para lanzar la tarea manualmente deberemos introducir por linea de comando:

php symfony mantenimiento:estadisticas

Parte 2 – Como ejecutar task de Symfony automáticamente con cron

Para ejecutar un task en Symfony automáticamente deberemos de usar cron para este cometido. En nuestro ejemplo deseamos que la tarea estadísticas se ejecute todos los días a las 24 horas. Para insertar esta tarea nueva introducimos por línea de comando:

crontab -e

Esto nos abrirá un archivo donde podremos introducir en cada línea la tarea que queremos que ejecute en un determinado tiempo. En nuestro caso todos los días a las 24 horas:

0 0 * * * php /directorio_del_proyecto/symfony mantenimiento:estadisticas

Con esta simple linea ya realizará la tarea todos los días a las 24 horas. Pero en algunos servidores he tenido un problema de que Symfony me ha dado el siguiente error There are no tasks defined in the “mantenimiento” namespace. Así que si este es tu problema sigue leyendo el apartado numero tres para poder solucionarlo.

Parte 3 – Solución para There are no tasks defined in the “mantemiento” namespace.

Existe un problema en algunos servidores que no tienen instalado Symfony a la hora de ejecutar una tarea fuera del directorio del proyecto. Esto es así por que no tienen instalado Symfony en el sistema y le es imposible encontrar la tarea o el comando Symfony. Por ello para ejecutar la tarea correctamente mediante cron, deberemos posicionarnos antes en el directorio del proyecto para que pueda encontrar el namespace y así solucionar el error.

Para esto deberemos ejecutar de nuevo crontab -e y editar nuestra tarea para que pueda ser ejecutada con éxito desde su directorio:

0 0 * * * cd /directorio/del/proyecto/ && /usr/bin/php5 ./symfony mantenimiento:estadisticas

Lo que realiza esta línea es, primero posicionarse en el directorio de nuestro proyecto, luego incluir la ruta completa de donde se encuentra instalado PHP y para finalizar ejecutar nuestra tarea como si se lanzase manualmente.

Por último comentaros que he probado en varios servidores esta forma de poder ejecutar tareas con Symfony automáticamente con cron y en todos ha funcionado perfectamente, aunque todos sabemos que cada servidor está configurado de distintas formas, así que si tenéis algun problema no dudéis en comentar.

votar

Artículos relacionados

Sobre KeLDroX

296

Desarrollador en entornos web y Diseñador de profesión, muy activo, que busca siempre enfrentarse a retos cada vez más dificiles. Si un día no hago algo nuevo o no he superado alguna dificultad para mi es un día vacío. Cuento con dos titulaciones: Técnico en Explotación de Sistemas Informáticos y Técnico Superior en Desarrollo de Aplicaciones Informáticas. Fundé rutarelativa porque siempre quise tener un sitio en donde compartir mis experiencias profesionales y a los problemas que me enfrento día a día en el ámbito profesional.

Sigue a Ruta Relativa

Trackback en Como ejecutar task de Symfony automáticamente con cron

Hasta el momento el artículo Como ejecutar task de Symfony automáticamente con cron no tiene Trackbacks.

Comentarios en Como ejecutar task de Symfony automáticamente con cron

1
Avatar del usuario Oraina

Muchas gracias por este artículo. A mi me ha ayudado a crear una tarea en symfony de forma precisa! Ahora intento trabajar con un objeto de una clase dentro de la tarea, pero en principio no me funciona…Gracias.

Oraina
17/12/2010 09:50:21
2
Avatar del usuario pablo

este cron sirve en windows tb?

pablo
12/02/2011 18:28:08

Escribir comentario en Como ejecutar task de Symfony automáticamente con cron

¡Tu opinión nos interesa!. Escribe tu opinión lo más clara posible para que todos podamos entenderla, evita el spam, comentarios ofensivos, etc. ya que serán eliminados. Tu opinión sera moderada antes de ser publicada, por lo que su aparición en la web puede tardar unos minutos. Si deseáis ponerse en contacto para sugerencias o críticas podéis hacerlo desde el formulario de contacto.

Sigue a rutarelativa en twitter
Editores de Ruta Relativa
Avatar del editor KeLDroX KeLDroX Desarrollador en entornos web y Diseñador de profesión, muy activo, que busca siempre enfrentarse a retos cada vez más dificiles. Si un día no hago algo nuevo o no he superado alguna dificultad para mi es un día vacío. Cuento con dos titulaciones: Técnico en Explotación de Sistemas Informáticos y Técnico Superior en Desarrollo de Aplicaciones Informáticas. Fundé rutarelativa porque siempre quise tener un sitio en donde compartir mis experiencias profesionales y a los problemas que me enfrento día a día en el ámbito profesional.
Avatar del editor sergiocius sergiocius Soy un desarrollador en entornos web y escritorio, entusiasta y amante de mi trabajo del que cada día espero aprender algo nuevo. Tengo una titulación de Técnico Superior en Desarrollo de Aplicaciones Informáticas y actualmente curso el primer año de Carrera Universitaria con el poco tiempo que me deja el trabajo. Fundé rutarelativa porque quiero que mi esfuerzo y tiempo invertidos en aprender y poner en práctica algo le resulte útil y fácil a otro usuario, del mismo modo que yo aprendo y ahorro tiempo con la ayuda de los demás.
Avatar del editor Victor Victor Desarrollador de aplicaciones informáticas con altos objetivos y ambiciones. Busco cada día aprender algo nuevo, ya que mi mundo se encuentra en constante actualización. Cuento con una titulación de Técnico Superior en Desarrollo de Aplicaciones Informáticas y una larga experiencia profesional.