Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

TÂCHES AUTOMATISÉES - CRON


Information sur la source

Description

C'est un petit script qui permet de choisir a quelle heure on désire que des requete soient exécutées !!!! C'est mon premier POST alors j'espère qu'il y aura des critiques qui vont me permettre de m'améliorer !!!

Merci
 

Source

  • $req=mysql_query("SELECT * FROM cron WHERE `id`='1'");
  • $res = mysql_fetch_array($req);
  • $day = $res[day];
  • $month = $res[month];
  • $year = $res[year];
  • $seconds = $res[seconds];
  • $minutes = $res[minutes];
  • $hour = $res[hour];
  • $repete=$res[frequency];
  • $date_actuelle = time();
  • $date_a_venir = mktime($hour, $minutes, $seconds, $month, $day, $year);
  • echo "<center><b><i>Date actuelle ::> $date_actuelle -- $date_a_venir <:: Prochaine execution</i></b></center>";
  • if($date_actuelle>$date_a_venir)
  • {
  • $next=getdate($date_a_venir + ($repete*3600) );
  • $year=$next[year];
  • $month=$next[mon];
  • $day=$next[mday];
  • $hour=$next[hours];
  • $minutes=$next[minutes];
  • $seconds=$next[seconds];
  • mysql_query('UPDATE cron SET year= "'.$year.'", month="'.$month.'", day="'.$day.'", hour="'.$hour.'", minutes="'.$minutes.'", seconds="'.$seconds.'" where id=1');
  • echo "<center><b>Execution de la requete</center></b>";
  • }
$req=mysql_query("SELECT * FROM cron WHERE `id`='1'");
$res = mysql_fetch_array($req);
$day = $res[day];     
$month = $res[month];   
$year = $res[year];       
$seconds = $res[seconds];     
$minutes = $res[minutes]; 
$hour = $res[hour];   
$repete=$res[frequency];

$date_actuelle = time();
$date_a_venir = mktime($hour, $minutes, $seconds, $month, $day, $year);

echo "<center><b><i>Date actuelle ::> $date_actuelle -- $date_a_venir <:: Prochaine execution</i></b></center>";

if($date_actuelle>$date_a_venir)
{
        $next=getdate($date_a_venir + ($repete*3600) );
        $year=$next[year];
        $month=$next[mon];
        $day=$next[mday];
        $hour=$next[hours];
        $minutes=$next[minutes];
        $seconds=$next[seconds];
   mysql_query('UPDATE cron SET year= "'.$year.'",  month="'.$month.'",  day="'.$day.'", hour="'.$hour.'", minutes="'.$minutes.'", seconds="'.$seconds.'" where id=1');
   echo "<center><b>Execution de la requete</center></b>";
}

Commentaires et avis

signaler à un administrateur
Commentaire de FhX le 13/10/2005 11:36:31

Pour ca il faut que la page soit chargé dans un navigateur quelconque !

signaler à un administrateur
Commentaire de Anthomicro le 13/10/2005 13:20:04

Salut,

idem que FhX, en rajoutant quelques trucs :

n'utilise pas de SELECT * mais un SELECT champ1,champ2...

lorsques tu utilises tes champs ne met pas $day = $res[day]; mais $day = $res['day'];

etc...

signaler à un administrateur
Commentaire de Kanouille le 13/10/2005 14:03:06

Je ferais juste une remarque concernant le titre de ton code.
En effet, il ne peut être qualifier de cron puisqu'il doit être chargé par un navigateur (comme l'a dit FhX), ou plus exactement, un navigateur doit faire une requète au serveur pour que celui-ci l'exécute.
Or un CRON est en soit un script qui est lancé de manière périodique par le serveur seul.
Pour optenir ce résultat, il faut avoir accès à la configuration de ton serveur et modifier la variable "crontable" qui est un fait un tableau où s'ont enregistrer l'ensemble des crons qui doivent être lancé à une date,heure,min,sec précise, périodiquement ou non.

Si j'ose rajouter quelques remarques :
- tu peux remplacer tes variables de date (jour, mois, année, etc) par une seul de type "DATETIME" dans ta base de donnée. Elle dispose d'une syntaxe certe particulière qu'il faut connaitre si on veut pouvoir l'utiliser correctement : "Y-m-d H:i:s" ce qui correspond à ANNEE-mois-jour HEURE:minute:seconde

Tu peux générer facilement ce genre de date par la fonction : date() => date('Y-m-d H:i:s')
Pour plus d'information sur la fonction date() je te conseille le site : www.nexen.net

Enfin, pour plus de clarté dans ton code, essaie de séparer des variables php de tes chaines
==> Date actuelle ::> $date_actuelle -- $date_a_venir <:: Prochaine execution
==> Date actuelle ::> ".$date_actuelle." -- ".$date_a_venir.3 <:: Prochaine execution
Un peu comme tu te dois de le faire en javascript :)
Ta version marche très bien, mais disons qu'elle est moins lisible face à de longues chaînes.

signaler à un administrateur
Commentaire de Anthomicro le 13/10/2005 14:04:56

Pour le datetime je ne suis pas d'accord : ça occupe plus de place et c'est moins aisé à traiter ;-)

signaler à un administrateur
Commentaire de Kanouille le 13/10/2005 14:15:24

Hmm pas convaincu que ca occupe moins de place, compte tenu que pour la base de donnée ce n'est ni plus ni moins qu'une chaine de caractère un peu particulière(enfin c'est ce que j'en avais lu).
Cependant, dans le cas de multiple champ pour générer une date, le traitement de la requête sera parcontre plus lourd vu qu'il y a plusieurs champs à examiner, au lieu d'une seule. C'est d'ailleur pour cette raison que les types DATE et DATETIME ont été créer ^^

Ainsi au final, si la syntaxe ne te plait pas, tu peux tout aussi bien utiliser une chaine de caractère que tu considère comme une date mais auquel tu donne la syntaxe que tu veux ^^.

signaler à un administrateur
Commentaire de Anthomicro le 13/10/2005 14:30:23

c'est plus lourd : un INT occupe 4 octets (32 bits), le datetime en occupe deux fois plus.

ensuite je ne vois pas en quoi la requête est plus lourde, au contraire.

signaler à un administrateur
Commentaire de Anthomicro le 13/10/2005 14:31:18

ah je viens de comprendre, pour une date stockée dans un INT un seul champ suffit, tu stockes la valeur de la fonction time() et hop...

signaler à un administrateur
Commentaire de Kanouille le 13/10/2005 14:34:06

c'est aussi une solution ;)
Mais l'idée et la même. N'avoir en Base de donnée qu'un seul champ.

signaler à un administrateur
Commentaire de coucou747 le 13/10/2005 18:47:13

Bon, selon moi, on pourrait peut-être faire un script php ou autre qui serait lancé par le vrai CRON et qui exécuterais des requettes présentes dans une table mysql si la date est bonne...

Ce script a de l'idée, mais ne peut fonctionner que sur un site fréquenté régulièrement...

signaler à un administrateur
Commentaire de piep14 le 13/10/2005 19:33:09

Bah oui, mais si le serveur ne le permet pas de lancer des taches CRON ???
Voila le pourquoi j'ai fait comme ceci !!! :D

signaler à un administrateur
Commentaire de Anthomicro le 13/10/2005 20:09:45

bah si il permet pas de lancer des tâches cron tu passes par webcron

signaler à un administrateur
Commentaire de coucou747 le 13/10/2005 20:21:53

ou tu changes de serveur...

signaler à un administrateur
Commentaire de Anthomicro le 13/10/2005 20:25:13

si t'as le budget ouais, enfin c'est déjà pas la même chose là...

signaler à un administrateur
Commentaire de piep14 le 13/10/2005 20:35:40

Bah c'est pareil avec Webcron, c'est payant !!! Si mon site accueil tout le temps des visiteurs mon système fonctionnera de la meme manière ! :D

signaler à un administrateur
Commentaire de Anthomicro le 13/10/2005 21:27:35

webcron c'est gratos...

signaler à un administrateur
Commentaire de xk155 le 17/10/2005 08:54:44

Une solution pourrait-être d'intégrer ce script dans une page html avec un auto-refresh de délai court. Il chargerai sa page dans un navigateur. Aprés, il suffit de ne pas fermer la page en question.

signaler à un administrateur
Commentaire de Anthomicro le 17/10/2005 13:31:02

ouais c'est du crade de chez crade, et hyper gourmand en plus ^^

signaler à un administrateur
Commentaire de Antidote le 17/10/2005 19:06:40

et en faisant joujou sur un flux RSS veux qu'eux on des temps d'actu que tu peut régler.

tes internautes intergrent le flux, a chaque appelle de mises à jour du flux ton script est joué... Ça pourrait être une idée.

J'ai jamais monté de RSS donc j'en sais rien ^^

signaler à un administrateur
Commentaire de Antidote le 17/10/2005 19:08:48

Et en faisant joujou sur un flux RSS vu qu'eux on des temps d'actu que tu peux régler.

Tes internautes intègrent le flux, à chaque appel de mises à jour du flux ton script est joué... Ça pourrait être une idée.

J'ai jamais monté de RSS donc j'en sais rien ^^

ahem (mieux orthographié ^_^)

signaler à un administrateur
Commentaire de astuces_jeux le 19/06/2007 20:26:28

il y a pas un code ou on ne doit pas auvrir dans un navig ???

signaler à un administrateur
Commentaire de astuces_jeux le 19/06/2007 20:27:30

moi j'ai une erreur webcron avec la function gzip

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Automatisation de tâche [ par mbik ] Bjr,je suis un stagiaire en info et je souhaite mettre en place :un script qui exécutera tous les soirs à partir de 01h une requête sql dans ma base d Tâche planifiée en PHP [ par Crafty57 ] Bonjour,Je suis en train de développer une application permettant de faire du Wake On LAN. En plus du démarrage immédiat, je souhaiterai permettre aux Exécution automatique d'une tâche [ par wininfos ] Bonjour,Sur mon site, j'ai des rapports à envoyer par mail, mais je ne vais pas meconnecter tous les jours à une heure précise pour que je lance la pr cron php [ par str ] Salut,Je suis a la recherche d'une commande pour executer un script php uniquement sur le serveur à partir d'une page php executée par un navigateur c automatisation des news cinema [ par radyonne ] Bonjour,Je voudrais mettre des infos cinema sur mon site radio mais automatiquement par rapport a commeaucinema.com si possible !Comment faire svp ??? Installation automatisée attention ! [ par Gobelindefeu ] Bon, voil&#224;, cela me fait penser, imaginer, que quelqu'un de mal honnete, veut hacker vos bases de donn&#233;es. Il poste ici ou autre part, une s declenchement automatique d'un script [ par moha013 ] est ce quelqu'un peu n'explique comment faire pour enclencher un script&nbsp; php&nbsp; automatiquement&nbsp; ,on ma parler&nbsp; de WEBCRON&nbsp; et& fonction PHP et CRON [ par garfield90 ] Bonjour, Voila mon probl&#232;me, Lorsque CRON fait touner un script PHP, je n'ai pas acces en autre aux fonctions mysql, ce qui est &#233;normement Automatisation d'un script sur un serveur de pages persos [ par fanfouer ] Bonjour,J'ai un script qui update mes tables a partir d'une liste pr&#233;sente sur le web. Actuellement, je dois lancer le script manuellement a chaq gestion du cron avec php [ par maxprog ] bonjour,mon probl&#232;me est le suivantj'ai des scripts php qui g&#233;n&#232;re des rapports en pdf et qui les envoit par mail par la suite, mais l'


Nos sponsors

Sondage...

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,39 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.