2011-08-08 12 views

Respuesta

3

Creo que es mucho mejor dejar que su aplicación controle la frecuencia de eventos en lugar del cronjob. Deje que el cronjob ejecute una acción determinada de su aplicación cada minuto. La acción, por ejemplo, comprueba una tabla de base de datos llamada cronjobs y ejecuta las tareas marcadas para ejecutarse mediante un número de frecuencia o una marca de tiempo.

Si lo hace así, puede agregar nuevos trabajos programáticamente desde cualquier lugar, p. a través de una interfaz cronjob. La solución es más fácil de mantener, probar y documentar.

2

Hay dos maneras. O bien, vuelva a crear el crontab en cada cambio del valor deseado o haga que la tarea cron se active regularmente, p. cada minuto, y prueba la condición de inicio desde el script.

0

Si hay suficientes privilegios de servidor, debe poder hacerlo utilizando una llamada de nivel de sistema desde su script PHP, usando system().

0

Lo mejor para hacer esto, probablemente sería escribir un script PHP que sea capaz de crear un archivo crontab (y ejecutar el script con privilegios suficientes para hacerlo).

Este site ofrece un buen tutorial.

Sin embargo, la dependencia de cron hará que su código dependa de plataformas compatibles con cron. Por lo tanto, otra solución sería implementar la lógica de ejecución temporizada en PHP en sí (es decir, buclear el código y verificar la hora usted mismo).

Puede combinar las dos soluciones anteriores, creando un Scheduler -interface que puede asignar a un script, y se asegurará de que se ejecute en los momentos adecuados. De esta manera se puede implementar usando cron en Linux, pero de otra manera en Windows:

interface Scheduler { 
    function schedule($script); 
} 
class CronScheduler { 
    function schedule($script) { 
    append_cronjob($script); 
    } 
} 

Aunque, podría estar exagerando aquí.

0

Si desea hacer esto, le sugiero que use Message Queue Beanstalkd en su lugar. Puede hacer programmatic de retraso y es muy rápido. Te aconsejo que uses pheanstalk para hablar con Beanstalkd.

Cuestiones relacionadas