2010-07-07 7 views
2

J'ai référencé http://bakery.cakephp.org/articles/view/calling-controller-actions-from-cron-and-the-command-line et créé cron_dispatcher.php et l'a placé dans le dossier de l'application.cron travail avec CakePHP

Je dois retourner une fonction de test de courrier électronique pour que le travail cron s'exécute dans la méthode de test de mon contrôleur d'utilisateur.

Et j'ai créé un emploi Cron dans mon panneau de commande du serveur web comme

"/usr/bin/php/home4/enventur/public_html/pennystock/cron_dispatcher.php /users/test" 

Mais sa me donner une erreur « Aucun fichier d'entrée spécifié. »

S'il vous plaît aidez-moi, comment résoudre ce problème ??

Merci à l'avance

+0

voir aussi: http: // stackoverflow. com/questions/3190145/cakephp-running-controller-action-as-a-cron-job-not-working – deizel

Répondre

4

Je l'ai fait de manière différente,

S'il vous plaît voir les étapes, il peut utile pour les autres ..

Cron/Shell en utilisant le framework CakePHP Structure:

  1. créer

    F:\websites\projectname\app\vendors\shells\filename.php

    class ClassName extends Shell { 
        //var $uses = array('Post'); //name of Model 
    
        //Main function runs always when shell executes 
        function main() { 
         mail("[email protected]","Test","Test"); 
        } 
    } 
    

2.mis en 754 la permission de F:\websites\projectname\cake\console\cake

  1. Set cron job comme /home4/enventur/public_html/pennystock/cake/console/cake -app "/home4/enventur/public_html/pennystock/app" ClassName >/dev/null 2>&1

    /dev/null 2>&1: for Suppressing warning/error/msg from server

Merci Nidhin

+0

J'ai essayé votre solution, mais malheureusement, il me donne une erreur: 'Erreur: Clas s TestingShell n'a pas pu être chargé. »Et j'ai tout fait exactement comme vous l'avez décrit. Avez-vous une idée de pourquoi cela ne fonctionne pas? Je vous remercie! – linkyndy

+0

pas sûr de .. pouvez-vous poster le code ici? –

+0

Je suis revenu à la version précédente de Cake et non ça marche bien. Je vous remercie! – linkyndy

0

Le travail de Cron est un processus long qui exécute les commandes à des dates et heures précises.

Accédez à votre compte cpanel de domaine.

Commencez par créer le fichier pour lequel vous voulez exécuter le code en utilisant le travail cron. et téléchargez le fichier sur le dossier racine de votre site Web.

Maintenant Accédez à la section "Cron job" dans votre compte cpanel et entrez le chemin d'accès au fichier dans la zone de texte et définissez le délai dans lequel vous voulez exécuter le fichier.

Merci.

+0

Belle réponse cher –

3

Sons comme PHP ne peut pas trouver le fichier que vous avez spécifié. Vérifiez que le chemin est correct. Par exemple:

# incorrect path 
/home4/enventur/public_html/pennystock/cron_dispatcher.php 

# correct path (?) 
/home4/enventur/public_html/pennystock/app/cron_dispatcher.php 

Maintenant, la partie suivante ne répond pas directement à votre question, mais il est intéressant de noter que CakePHP shells sont prévus à cet effet exact.

Si vous avez créé un shell appelé Mailer et copié votre code UsersController::test()-MailerShell::test(), vous appelleriez que de cron comme celui-ci (encore une fois, vérifiez les chemins sont corrects):

/home4/enventur/public_html/pennystock/cake/console/cake -app /home4/enventur/public_html/pennystock/app mailer test

Avec cette approche, vous n'auriez pas besoin d'utiliser cron_dispatcher.php comme indiqué dans cet ancien article Bakery (écrit pour CakePHP 1.1 à Noël il y a 4 ans).

Questions connexes