Cómo configurar cronjobs en cake php?

¿Cómo puedo usar cron job en cakephp para llamar a una acción de un controlador en Ubuntu, estoy tratando de hacerlo a través de crontab pero no está funcionando?

Usa un caparazón

La ‘forma de pastel’ de usar una aplicación CakePHP en trabajos cron crearía shell y luego lo llamaría como un trabajo cron.

es decir, cree un shell para hacer la tarea y luego agréguelo a crontab ( crontab -e en la máquina de Linux):

 0 * * * * cd /path/to/app/ && Console/cake your_shell_name params 

Crear conchas y usarlas con cron está cubierto en la documentación.

Como no necesitamos la capa View de MVC, también sugeriremos utilizar Cake shell en lugar de escribirlo en los controladores normales. Esto también reducirá la carga de memoria de varias funciones de callback de los controladores como beforeFilter, beforeRender et al.

Luego haga una entrada en la pestaña ** nix cron para los crones escritos en sus CakeShells.

Esto se puede hacer muy fácilmente mediante los siguientes pasos:

1) Crear un shell digamos HelloShell.php en Console / Command

   

Este shell puede ser llamado por Console / cake hola

2) Escribe el comando crontab-e . Esto abrirá el editor predeterminado o el editor que seleccionas Ahora, ya que queremos que nuestro shell se ejecute después de cada 5 minutos, escribe:

  */5 * * * * /PATH TO APP/Console/cake hello 

Para una mejor comprensión, consulte https://www.youtube.com/watch?v=ljgvo2jM234.

3) Si desea invocar la acción del Controlador en Shell simplemente importe ese controlador en particular, digamos AppController por App::uses('AppController', 'Controller');

Ahora crea el objeto AppController en Shell por

 $object =new AppController(); $object->func_in_controller(); 

Ahora se puede acceder a los parámetros de la función en el Shell mediante $object->func_param;

¡Gracias!

Puede crear trabajos cron llamando directamente a la URL:

 php -f http://yoursite.com/yourController/yourAction/params > /dev/null 

O puede hacerlo también con rutas relativas:

 php -f CakePHP/yourController/yourAction/params > /dev/null 

Puede ver cómo usar cron para Unix aquí .

De todos modos, le recomendaría que use CakePHP Shell si la acción solo estará disponible desde los trabajos cron y no a ningún otro usuario por URL.

Tiene más información sobre cómo llamar a Cake Shell desde trabajos cron en la documentación de CakePHP .