supprimer une tache cron avec un php appelé par cron

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics

migli
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 41
Inscription: 11 Avr 2006

supprimer une tache cron avec un php appelé par cron

Message le Mar Aoû 25, 2009 9:12

Voilà mon souci : j'ai créé une tâche cron en utilisant un script php, en tant qu'utilisateur (pas en root).

Cette tâche lance une page php, qui va faire des trucs, et quand elle a fini je voudrais que la tâche soit supprimée de cron.

Problème : c'est cron qui lance le fichier php, et quand j'essaie d'effacer la tâche (à la fin du php, avec exec), j'ai un problème de droits, ou d'accès, ou je sais pas quoi.

Je précise que si je lance le php avec un navigateur, il supprime bien la tâche.

J'ai essayé :

Code: Tout sélectionner
exec('crontab -u nonutilisateur -l', $oldCrontab);


et je reçois :
Code: Tout sélectionner
sh: /crontab: No such file or directory


(j'espère être clair, je ne suis pas sûr).

Quelqu'un peut m'aider ??

Merci.

migli
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 41
Inscription: 11 Avr 2006

Re: supprimer une tache cron avec un php appelé par cron

Message le Mar Aoû 25, 2009 9:13

au fait, scusez : Bonjour à tous !!


ortolojf
WRInaute passionné
WRInaute passionné
 
Messages: 1676
Inscription: 14 Aoû 2002

Re: supprimer une tache cron avec un php appelé par cron

Message le Mar Aoû 25, 2009 9:16

Bonjour ;)

Problème de gestion de cron, plus que de php...

Amicalement.

Jean-François Ortolo

migli
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 41
Inscription: 11 Avr 2006

Re: supprimer une tache cron avec un php appelé par cron

Message le Mar Aoû 25, 2009 9:50

effectivement, il doit y avoir un problème soit d'autorisation, soit de chemin d'accès, ou autre chose dont je n'ai pas idée, mais j'ai vérifié les chmod, je n'ai pas de solution pour l'instant.

dmathieu
Modérateur
Modérateur
 
Messages: 7244
Inscription: 9 Jan 2004

Re: supprimer une tache cron avec un php appelé par cron

Message le Mar Aoû 25, 2009 10:05

Pourquoi supprimer ton cron ? Un cron est utilisé pour des taches répétitives. Si c'est pour exécuter une tâche une seule fois, il existe d'autres méthodes.

Explique ce que tu veut faire parce que la, IMHO, tu ne dois pas faire les choses de la meilleure manière.

migli
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 41
Inscription: 11 Avr 2006

Re: supprimer une tache cron avec un php appelé par cron

Message le Mar Aoû 25, 2009 10:17

il s'agit d'une newsletter à envoi différé. Lorsqu'elle est envoyée, je la supprime pour qu'elle ne reparte pas l'année d'après !

dmathieu
Modérateur
Modérateur
 
Messages: 7244
Inscription: 9 Jan 2004

Re: supprimer une tache cron avec un php appelé par cron

Message le Mar Aoû 25, 2009 10:22

Eh bien l'idée serait alors quelque chose comme :

- Ton cron détecte qui a reçu la dernière newsletter. Si tout le monde l'a reçue, tu n'envoie rien.
- Si quelqu'un n'a pas reçu la dernière newsletter, tu la lui envoie.

Lorsque tu envoie une nouvelle newsletter, tu signale à ton cron (en ajoutant ta newsletter en base de données par exemple) qu'il y a une nouvelle newsletter.
Il l'enverra alors à tous les abonnés.

Un outil que tu ne pourra pas utiliser car ce n'est pas du php mais dont tu pourra t'inspirer au niveau de la conception, c'est delayed_job.
http://github.com/tobi/delayed_job/tree/master

Lorsqu'il y a quelque chose à faire, le cron l'exécute. Sinon il s'arrête simplement.
Une action peut être l'envoi de cette newsletter.

Mais ce qui est sur, c'est que supprimer un cron via le script php, c'est pas une bonne méthode architecturale.

migli
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 41
Inscription: 11 Avr 2006

Re: supprimer une tache cron avec un php appelé par cron

Message le Mar Aoû 25, 2009 10:57

Merci beaucoup !

J'ai déjà un script qui envoie ces newsletters en ajax dans le cas d'envoi immédiat. Par contre l'excellente idée que je n'ai pas eue avant (...!) est simplement de marquer la newsletter 'envoyée' dans la base de données. Seul inconvénient : le cron va trainer plein de taches inutiles qu'il relancera tous les ans.

Si je ne trouve pas de solution pour supprimer les crons après execution, j'adopterai celle-ci qui en tout cas fonctionne.

N'y a-t-il pas simplement une instruction à ajouter (style ' #!/usr/bin/...????') qui permette d'accéder au fichier cron depuis php, puis le modifier ?

dmathieu
Modérateur
Modérateur
 
Messages: 7244
Inscription: 9 Jan 2004

Re: supprimer une tache cron avec un php appelé par cron

Message le Mar Aoû 25, 2009 11:02

Pourquoi le cron trainerait-il des tâches inutiles ?? Une fois que ta tâche est terminée, le processus se tue tout seul.

migli
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 41
Inscription: 11 Avr 2006

Re: supprimer une tache cron avec un php appelé par cron

Message le Mar Aoû 25, 2009 11:50

il sera relancé l'année suivante, non ? (ou quelques années si on spécifie le jour de la semaine)

dmathieu
Modérateur
Modérateur
 
Messages: 7244
Inscription: 9 Jan 2004

Re: supprimer une tache cron avec un php appelé par cron

Message le Mar Aoû 25, 2009 12:05

C'est un cron exécuté une seule fois de toute façon ? Pourquoi faire un cron alors ? Exécute la tâche manuellement. Ca sera plus simple.

migli
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 41
Inscription: 11 Avr 2006

Re: supprimer une tache cron avec un php appelé par cron

Message le Mar Aoû 25, 2009 12:26

Je ne peux pas programmer en différé sans cron.


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 8579
Inscription: 23 Nov 2005

Re: supprimer une tache cron avec un php appelé par cron

Message le Mar Aoû 25, 2009 12:32

Sinon tu as la solution d'utiliser ton cron pour interroger une table où se situent les dates auxquels ta newsletter doit être envoyé. Si lors du passage du CRON, une date inférieure où l'envoi n'a pas été fait (dans ce cas-là ta table doit inclure un flag dont l'état change lorsque toutes les newsletter sont parties) est présente dans la table, tu exécutés le script d'envoi.

migli
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 41
Inscription: 11 Avr 2006

[RESOLU]Re: supprimer une tache cron avec un php appelé par cron

Message le Mar Aoû 25, 2009 15:43

Merci à tous, j'ai trouvé d'où venait le problème : il fallait simplement désactiver le safe_mode de php


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par les experts Google Analytics de Ranking Metrics.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités