Pregunta

Soy totalmente nuevo en el tema de los trabajos cron, así que no tengo idea de dónde comenzar a aprender sobre ellos; cuándo, por qué o cómo usarlos con mi aplicación Zend Framework, o PHP en general.

¿Alguien puede explicar el proceso, con un ejemplo, o recomendar algunos buenos recursos para comenzar?

¿Fue útil?

Solución

Cron jobs es un mecanismo para automatizar tareas en el sistema operativo Linux. Y tiene muy poco que ver con Zend Framework. Sin embargo, el marco puede ayudarlo a desarrollar una tarea cron avanzada en php. Pero luego tendrá que configurar su trabajo cron en el shell.

Buscar en Google " cómo configurar cron job " reveló este enlace en la parte superior:

http://www.adminschoice.com/docs/crontab.htm

Estoy seguro de que este artículo te ayudará.

P.S.

Como comando para ejecutar debe poner algo como:

/usr/local/bin/php -f <path_to_your_php_script>

donde la primera ruta es la ruta completa a su ejecutable php cli, que puede diferir en su máquina. Puede asegurarse emitiendo este comando:

which php

Buena suerte con los trabajos cron;)

Otros consejos

Como Zend Framework es una colección de componentes acoplados de alguna manera, puede usar los componentes que desee en cada script PHP, incluidos los scripts CLI. Sin embargo, tendrá que asegurarse de que PHP pueda encontrar las clases relevantes de Zend Framework, por lo que debe agregar la ruta de la biblioteca de Zend Framework a su include_path. Luego puede configurar la carga automática usando Zend_Loader_Autoloader (ZF & Gt; = 1.8) o Zend_Loader (ZF & Lt; 1.8) para hacer la vida más fácil. Ahora, debe tener acceso a todos los componentes de Zend Framework que puede usar a voluntad.

Como cualquier otro script o programa, este script PHP se puede usar en un trabajo cron de forma natural. Una cosa más a tener en cuenta es que tendrá que asegurarse de que el usuario que ejecuta sus trabajos cron tenga acceso de lectura a la ruta de la biblioteca de Zend Framework; de lo contrario, PHP no puede leer los archivos de Zend Framework.

Si su pregunta estaba dirigida al uso del componente MVC en los scripts de la CLI, debo admitir que no tengo ninguna experiencia en esto. Supongo que se debe hacer un esfuerzo no despreciable para implementar las clases apropiadas de solicitud, respuesta, envío y ruta.

EDIT:

Consulte este artículo para más información.

Quizás un ejemplo de la vida real ayudaría. Hace unos años, trabajé en un proyecto de calendario de eventos utilizando Zend Framework. En este calendario, un usuario podría crear un evento y adjuntar 1 o más fechas al evento. Naturalmente, implementé esto como una unión de muchos a uno en mi base de datos, pero esto significaba que para adjuntar una fecha, el evento tenía que existir primero. Sin embargo, quería permitir a los usuarios agregar fechas mientras creaban el evento, no después de crear un evento. En otras palabras, quería que el usuario editara todos los aspectos de un evento al mismo tiempo y lo enviara solo cuando hacían clic en & Quot; save. & Quot;

Resolví el problema insertando un nuevo registro de evento vacío en la base de datos cuando el usuario comienza a crear un registro de evento. Este registro vacío se completa y se guarda cuando el usuario hace clic en & Quot; guardar & Quot ;, o se elimina cuando el usuario hace clic en & Quot; cancelar & Quot ;. El problema ocurrió cuando los usuarios se alejaron sin hacer clic en & Quot; cancelar & Quot ;, y el registro de evento vacío se dejó en la base de datos. Eventualmente, la base de datos se llenaría con estos eventos vacíos sin sentido, y las cosas podrían ponerse feas.

Escribí una función llamada " maintenance () " ;, que, entre otras cosas, eliminó todos los registros no guardados de más de 24 horas. Configuré un trabajo cron que se ejecutaba todas las noches y ejecutaba un script php de línea de comandos que ejecutaba mantenimiento ().

Otras cosas para las que puede usar un trabajo cron:

  • Enviar un lote de correos electrónicos a nuevos usuarios. (cada 5 minutos?)
  • Actualizar estadísticas de usuario (¿cada hora?)
  • Realice operaciones intensivas en recursos cuando los servidores no están llenos de tráfico (¿Todas las noches a medianoche o una vez a la semana los domingos por la noche?)
  • Cualquier otro evento que no ocurra en respuesta a una solicitud del usuario (lo que Jeff llama " fuera de banda ").

también puede estar interesado en cómo almacenar trabajos cron con ZF

Aquí hay un enlace a una buena manera de implementar su sistema cron con Zend Framework:

Tareas Cron en aplicaciones Zend Framework

Personalmente, lo he adaptado para que el parámetro pueda ser dinámico, pero la base es la misma :-)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top