OVH Community, votre nouvel espace communautaire.

[laravel] comment planifier une tache CRON


Ludo.H
06/05/2016, 08h50
Bonjour,

Si c'est pour faire des tâches cron, pourquoi ne pas utiliser du bash :

Code:
#!/usr/bin/env bash

curl  http:///index.php?parma1=test¶m2=test2

ou

curl -XPOST --data  "var1=coucou" http:///test/print
Le dernier test va appeler la route /test/print (imaginons qu'elle existe et qu'elle fasse un echo de la variable var1 donnée par POST).
L'élément -XPOST --data "var1=coucou" va poster le variable var1 avec comme valeur 'coucou'.
Au final cela affichera coucou en passant par la route.

Ou alors j'ai pas compris la question

Cdt,

Daniel60
05/05/2016, 18h06
Désolé je ne connais pas ton application, et je ne pourrai pas te conseiller pour ton script. Essai de poser ta question sur le forum Lavarel, s'il existe.
Et tu peux essayer ton script avant de faire une tâche cron.

domibu
05/05/2016, 17h59
Merci pour la réponse , mais je ne vois vraiment pas comment faire.

Si mon script s'appelle essaiBatchController.php et qu'il est enregistré dans mon_appli/app/Http/Controllers,alors j'ai bien compris qu'il fallait enregistrer la tache comme je l'ai fait. Et ca fonctionne (cf mon exemple echo "coucou" dans mon premier post)

Mais à partir de ce script essaiBatchController.php, comment appeler index.php et lui passer un paramètre que je puisse gérer dans une route "laravel" , par exemple www.monsite.fr/traitement

et dans mon "routes.php" j'intercepte cette url pour declencher une fonction d'un contrôleur. Par exemple :

Route::get('traitement/toto}', array('as' => 'traitement','uses' => 'BatchController@traitement_toto'));

L'interet serait alors d'avoir à disposition toutes mes classes, méthodes, mon accés bdd, etc....
Est ce plus clair ?

Dominique

Daniel60
05/05/2016, 16h01
La seule chose à faire est d'indiquer le chemin du script sous la forme /home/[ton identifiant]/[ton chemin]/[ton script]. A partir de là effectivement ton script peut communiquer des variables à ton index.php et l'exécuter.

domibu
05/05/2016, 14h14
Bonjour

J'aimerai comprendre comment fonctionnent les taches CRON sous OVH en mutualisé avec le framework PHP laravel ( v5.1).

Pour l'instant, j'ai créé une simple tache qui fait un echo "coucou". Cela fonctionne, je vois bien le "coucou" dans mes logs.

Si je comprends le principe de ces taches chez OVH, il faut pointer directement vers le script dans son bon répertoire, sans passer par le index.php. Donc je programme la tache comme ceci dans mon espace personnel et ça marche :

Code:
mon_appli/app/Http/Controllers/EssaiBatchController.php
Maintenant je voudrai aller plus loin et faire autre chose qu'un echo "coucou". Comment mon script peut appeler tout le nécessaire du framework laravel pour qu'il puisse accéder à la config de la bdd, mes classes, mes méthodes, mes modèles, etc....Car normalement c'est le index.php qui initialise tout cela, mais comme j'attaque directement un script, comment faire ?

Est ce que le script déclaré dans la tâche cron doit être index.php suivi d'autres paramètres ?

Est ce que le script déclaré dans la tâche cron doit être une url du style www.monsite.fr/traitement ?

Vous l'avez compris , j'ai besoin d'aide. Quelqu'un l'a t il déjà fait ?

Une fois que j'aurai compris sur un exemple et mis en pratique, je pourrai sans doute utiliser les fonctionnalités de planification du framework (https://laravel.com/docs/5.1/scheduling). Mais je n'en suis pas encore là, j'essaie d'abord de comprendre le basique.

Merci pour vos retours et bonne journée à tous.

Dominique