2012-01-15 4 views
0

J'ai cPanel sur un serveur partagé et j'ai besoin d'exécuter un script shell tous les jours.Scripts Cakephp 2.0, CPanel et Shell

Ce script doit appeler une fonction de contrôleur qui annule une page Web tous les jours.

Mon problème est que je ne sais pas comment faire un script shell qui appelle cette fonction et l'ajoute aux tâches cron dans cpanel. Comment puis-je faire tout cela?

Merci d'avance!


Je vais prolonger ma question.

Je possède ce code "TestTask.php":

class TestTask extends Shell { 

    function main() { 
     $this->out('Hello world.'); 
    } 

    function execute() { 
     $this->out('Hello world 2.'); 
    } 
} 

Il est situé dans: /home/myuser/public_html/app/Console/Command/Task

Et puis, mon cronjob est comme ceci:

* * * * * php /home/myuser/public_html/app/Console/cake.php test -app /home/myuser/public_html/app >> /home/myuser/public_html/file.log 

La dernière partie, il est pour enregistrer la sortie dans un fichier.

Cela ne fonctionne pas du tout.

Aide s'il vous plaît !!!

+0

Si vous avez un accès ssh, je pense que vous pouvez le faire avec la commande crontab -e. –

Répondre

0

est ici la commande pour une tâche cron J'utilise sur mon serveur:

/home/path-to-cake/lib/Cake/Console/cake -app /home/path-to-cake/app time

time est ma coquille, situé dans /app/Console/Command/TimeShell.php. C'est comme ça que vous lancez des obus. Maintenant, dans l'autre partie de votre question, une tâche doit être appelée depuis un shell. Du code que vous avez posté, il semble que vous confondiez un peu les coquilles avec les tâches. Un shell peut contenir des tâches, tout comme les contrôleurs peuvent avoir des composants. main(); est requis pour un shell lorsqu'il est appelé sans arguments. Il n'est pas nécessaire pour une tâche de l'implémenter. D'un autre côté, une tâche doit implémenter une méthode execute();.

Pour exécuter une tâche à partir de votre shell, veillez à ajouter public $tasks = array('Test'); dans la classe TestShell; Vous pouvez utiliser cette tâche dans votre shell comme vous utilisez un composant dans un contrôleur: $this->Test->whatever();

Pour plus d'informations sur les coquilles et les tâches CakePHP 2.0, consultez here

Hope this aidé!