supprimer une tache cron avec un php appelé par cron
14 messages
• Page 1 sur 1
Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics
- migli
- Nouveau WRInaute

- Messages: 41
- Inscription: 11 Avr 2006
supprimer une tache cron avec un php appelé par cron
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é :
et je reçois :
(j'espère être clair, je ne suis pas sûr).
Quelqu'un peut m'aider ??
Merci.
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

- Messages: 41
- Inscription: 11 Avr 2006
Re: supprimer une tache cron avec un php appelé par cron
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

- Messages: 7244
- Inscription: 9 Jan 2004
Re: supprimer une tache cron avec un php appelé par cron
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.
Explique ce que tu veut faire parce que la, IMHO, tu ne dois pas faire les choses de la meilleure manière.
- dmathieu
- Modérateur

- Messages: 7244
- Inscription: 9 Jan 2004
Re: supprimer une tache cron avec un php appelé par cron
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.
- 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

- Messages: 41
- Inscription: 11 Avr 2006
Re: supprimer une tache cron avec un php appelé par cron
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 ?
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 ?
-

UsagiYojimbo - WRInaute accro

- Messages: 8579
- Inscription: 23 Nov 2005
Re: supprimer une tache cron avec un php appelé par cron
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.
14 messages
• Page 1 sur 1
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


