Tache planifiée, éxécutée 1 seule fois

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Tache planifiée, éxécutée 1 seule fois

par Paulo » 21 févr. 2006, 12:17

Salut Ripat

Je ne trouve pas de logs pour qmail sur le serveur.
Ce qui m'interreserai, c'est de trouver le fichier de config de qmail afin de voir le chemin d'acces au log.

par Ripat » 20 févr. 2006, 23:09

Non. Pas à ma connaissance. Les jobs sont mis en spool dans:
/var/spool/cron/atjobs.

Que disent les log du serveur SMTP ?

par Paulo » 20 févr. 2006, 22:07

Moi non plus je ne vois rien d'anormal.

Quant à la syntaxe de la fonction mail, pour être plus juste l'argument serrait "FROM:[email protected]"
Mais bon ça fonctionne quand meme car lorsque je fait une requete directement sur mail.php, je reçois bien le mail.

Existe t-il des logs pour a fonction "at" ?

par Ripat » 20 févr. 2006, 21:54

Tout m'a l'air correct au niveau de l'utilisation d'exec() et de at.

Je suis par contre un peu dubitatif sur le dernier argument de la fonction mail(). Cet argument est celui du header non?

par Invité » 20 févr. 2006, 19:37

J'ai mon script test.php
/var/www/vhosts/domaine.tld/httpdocs/test.php

Code : Tout sélectionner

exec("at -f /var/www/vhosts/domaine.tld/httpdocs/monAtJob 17:30 20.02.2006");

le fichier monAtJob
/var/www/vhosts/domaine.tld/httpdocs/monAtJob

Code : Tout sélectionner

php -f /var/www/vhosts/domaine.tld/httpdocs/mail.php

le fichier mail.php
/var/www/vhosts/domaine.tld/httpdocs/mail.php

Code : Tout sélectionner

mail("[email protected]", "le sujet" , "message txt", "message html" , "[email protected]")

par Ripat » 20 févr. 2006, 19:20

Alors c'est tout bon!

Quelles commandes as-tu mises dans /var/www/vhosts/domaine.tld/httpdocs/monAtJob ?

par Paulo » 20 févr. 2006, 19:11

J'ai ceci en retour

Code : Tout sélectionner

Array ( [0] => job 46 at 2006-02-20 17:30 )

par Ripat » 20 févr. 2006, 18:52

Essaye d'abord ceci:
echo exec("at 2>&1 -f /var/www/vhosts/domaine.tld/httpdocs/monAtJob 17:30 20.02.2006");
La redirection de stderr vers stdout permettra de voir quelle erreur le shell renvoie quand invoqué par le exec() de php.

par Paulo » 20 févr. 2006, 18:42

Oui, mais en tant que root

Code : Tout sélectionner

at -f /var/www/vhosts/domaine.tld/httpdocs/monAtJob 17:34 20.02.2006
=>> 45 2006-02-20 17:34 a root

C'est bon.
Pour les tests, ca envoie un mail et je le reçois bien.

Par contre, dans le script php

Code : Tout sélectionner

exec("at -f /var/www/vhosts/domaine.tld/httpdocs/monAtJob 17:30 20.02.2006");
=>> 44 2006-02-20 17:30 a apache

Ce n'est pas bon, pourtant il est bien en attente (atq)

La seule différence que je vois, se sont les users qui sont différents (root & apache).

Pourtant en ayant le fichier /ect/at.deny vide, il est indiqué que tout utilisateur est autorisé.

par Ripat » 20 févr. 2006, 18:19

As-tu essayé en ligne de commande avant de la faire par exec() ?

par Paulo » 20 févr. 2006, 18:17

Moi aussi justement j'essaie d'utiliser la fontion at mais sans succes.

exec("at -f /var/www/vhosts/domaine.tld/httpdocs/monAtJob 17:05 20.02.2006");

Le job passe bien dans la file d'attente mais aucun resultat.

Pour la config j'ai 1 seul fichier /ect/at.denny qui est vide.
Ce qui permet en théorie l'acces à tous les utilisateurs.


Je n'ai pas encore de solutions :(

par Albert » 18 févr. 2006, 19:24

Vraiment rapide ce Ripat :wink:

J'essaie tout ça

Je suis sur un dédie, et j'utilise deja la fonction exec() sur d'autre script.

Mais je ne connaissais pas du tout la commande "at".

Encore une fois merci pour tout.

Albert

par Ripat » 18 févr. 2006, 19:17

Simplement:
exec('at -f monAtJob 10:13 25.03.2006');
Il faut, pour cela, que les fonctions exec() ou assimilées soient disponibles sur ton site. Ce n'est souvent pas le cas en mutualisé.

par Invité » 18 févr. 2006, 18:58

Ok, Ripat merci de ta réponse, c'est super sympa.

Mais pour répondre exactement à ma question,

Est il possible d'utiliser la commande ci dessous directement dans un script PHP ??

Code : Tout sélectionner

at -f monAtJob 10:13 25.03.2006
Car je voudrait justement, qu'à l'éxécution d'un script php, ce dernier prepare une tache planifiée.

Merci.

par Ripat » 18 févr. 2006, 11:26

Si tu veux utiliser at pour exécuter un script php il te faut:
  1. Créer ton script :wink: (exple test.php)
  2. Créer un fichier qui contiendra la commande qui fera un GET sur ce script. Tu peux utiliser wget ou curl, à ta bonne convenance. Exemple fichier monAtJob:

    Code : Tout sélectionner

    wget -q -O /dev/null 'http://localhost/test.php' # ou, plus court: curl localhost/test.php # ou, plus simplement php -f test.php
  3. Programmer ton at en ligne de commande. Il ira lire les commandes contenues dans monAtJob

    Code : Tout sélectionner

    at -f monAtJob 10:13 25.03.2006
    La commande at est très flexible sur le format de l'heure et date. Elle acceptera des formats aussi différents que
    • at 6pm 25 december 2006
    • at 6pm december 25 2006
    • at 18:00 25.12.2006
    • at 18:00 12/25/2006