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 !

EXÉCUTION AUTOMATIQUE DE SCRIPTS PHP (CRON)


Information sur la source

Catégorie :Fichier / Disque Niveau : Débutant Date de création : 10/01/2005 Date de mise à jour : 11/01/2005 16:19:38 Vu / téléchargé: 20 893 / 918

Note :
9,08 / 10 - par 12 personnes
9,08 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (31)
Ajouter un commentaire et/ou une note

Description

C'est plus une explication qu'une source (oops!)... Pour exécuter un script à une heure/date choisie, on n'échappe pas au programme 'cron' qui se trouve sur Unix/Linux, mais pas sur Windows. Si votre fournisseur d'accès vous y donne l'accès (comme fait le mien, thanx!) ou si vous êtes votre propre hébergeur et que vous tournez sur Linux, vous pouvez utiliser ce script tout simple qui vous permet d'ajouter des tâches à exécuter (des tâches PHP), comme des sauvegardes de base de données,  par exemple.

Plus d'infos sur cron sur http://www.unixgeeks.org/security/newbie/unix/cron-1.html entre autres.

Enjoy! Malik7934
 

Source

  • <?php
  • // ce script doit être appelé par un formulaire
  • // Exemple:
  • // Exécuter le fichier se trouvant à l'adresse
  • // http://localhost/happynewyear.php à nouvel an:
  • //
  • // url : http://localhost/happynewyear.php
  • // minute: 0
  • // heure : 0
  • // jour de la semaine: *
  • // mois : 1
  • // jour du mois : 1
  • // Préparation de la requête
  • // ces données viennent d'un formulaire
  • $url = $_POST['url'];
  • $minute = $_POST['minute'];
  • $heure = $_POST['heure'];
  • $dayweek = $_POST['dayweek'];
  • $day = $_POST['day'];
  • $month = $_POST['month'];
  • // The time and date fields are:
  • //
  • // field allowed values
  • // ----- --------------
  • // minute 0-59
  • // hour 0-23
  • // day of month 1-31
  • // month 0-12 (or names, see below)
  • // day of week 0-7 (0 or 7 is Sun, or use names)
  • //
  • // A field may be an asterisk (*), which always stands for ``first-last''.
  • $texte = $minute." ".$heure." ".$day." ".$month." ".$dayweek." ";
  • // pour exécuter un script php en ligne de commande: php -f
  • $texte .= "php -f ".$url;
  • // Ecriture de la requête dans un fichier (pensez aux droits)
  • $fichier = "cront.cron";
  • $fil = fopen($fichier,'a');
  • if(fputs($fil,$texte."\n"))
  • echo "La requete ".$texte." a ete enregistree<BR>";
  • else {
  • echo "Erreur! La requete ".$texte." n'a pas ete enregistree!";
  • exit();
  • }
  • // Exécution de cron avec votre username à la place de YOURUSERNAME
  • if(passthru('crontab YOURUSERNAME cront.cron'))
  • echo "La requete ".$texte." a ete ajoutee a la liste des taches";
  • else echo "Erreur! La requete ".$texte." n'a pas ete ajoutee a la liste des taches!";
  • ?>
<?php

// ce script doit être appelé par un formulaire

// Exemple: 
// Exécuter le fichier se trouvant à l'adresse 
// http://localhost/happynewyear.php à nouvel an:
//
// url : http://localhost/happynewyear.php
// minute: 0
// heure : 0
// jour de la semaine: *
// mois : 1
// jour du mois : 1

// Préparation de la requête
// ces données viennent d'un formulaire

$url		= $_POST['url'];
$minute		= $_POST['minute'];
$heure		= $_POST['heure'];
$dayweek	= $_POST['dayweek'];
$day		= $_POST['day'];
$month		= $_POST['month'];

//       The time and date fields are:
//
//              field          allowed values
//              -----          --------------
//              minute         0-59
//              hour           0-23
//              day of month   1-31
//              month          0-12 (or names, see below)
//              day of week    0-7 (0 or 7 is Sun, or use names)
//
//       A field may be an asterisk (*), which always stands for ``first-last''.

$texte  = $minute." ".$heure." ".$day." ".$month." ".$dayweek." ";

// pour exécuter un script php en ligne de commande: php -f
$texte .= "php -f ".$url;

// Ecriture de la requête dans un fichier (pensez aux droits)

$fichier = "cront.cron";
$fil = fopen($fichier,'a');
if(fputs($fil,$texte."\n"))
	echo "La requete ".$texte." a ete enregistree<BR>";
else 	{
	echo "Erreur! La requete ".$texte." n'a pas ete enregistree!";
	exit();
	}

// Exécution de cron avec votre username à la place de YOURUSERNAME

if(passthru('crontab YOURUSERNAME cront.cron'))
	echo "La requete ".$texte." a ete ajoutee a la liste des taches";
else 	echo "Erreur! La requete ".$texte." n'a pas ete ajoutee a la liste des taches!";
?>

Conclusion

C'est un script minimaliste. Comme je l'ai dit, c'est plus une explication qu'une source ;o) Les remarques CONSTRUCTIVES sont bien sûr les bienvenues...
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

10 janvier 2005 15:29:51 :
Ajout d'un zip avec un formulaire
11 janvier 2005 16:19:39 :
Petite correction. Dans la commande, le -u est en trop! Ce n'est pas 'crontab -u YOURUSERNAME cront.cron' mais 'crontab YOURUSERNAME cront.cron'. Notez de plus que USERNAME n'est pas forcément nécessaire (ça dépend de votre session)

Commentaires et avis

signaler à un administrateur
Commentaire de Anthomicro le 10/01/2005 18:58:26

Salut ;-)

Très bon script :-)

je te mets 10/10

un petit truc que tu peux corriger : le <BR> à remplacer par <br />

a ++

signaler à un administrateur
Commentaire de malik7934 le 10/01/2005 20:05:04

Merci bien Anthomicro!

Tu m'expliques la différence qu'il y a entre <br> et <br/> stp?
<br/> me semble être une syntaxe "orientée xml", sans plus.

signaler à un administrateur
Commentaire de Anthomicro le 10/01/2005 20:05:53

Bah voilà la réponse est dans ta question, c'est compatible xhtml ;-)

a ++

signaler à un administrateur
Commentaire de Anthomicro le 10/01/2005 20:07:41

d'ailleurs c'est <br /> et non <br/> ceci afin de préserver la compatibilité avec les vieux navigateurs (et je trouve ça plus propre perso)

signaler à un administrateur
Commentaire de HRdesalpes le 11/01/2005 16:38:06

moi j'ai une question sur un hebergeur win32 on peut?

signaler à un administrateur
Commentaire de malik7934 le 11/01/2005 16:42:47

Franchement aucune idée! Je sais qu'il existe des versions Windobe de cron, mais je ne sais pas si il y a des hébergeurs  qui le proposent  (faut être fou pour héberger sous Windobe à part ça!)

Mais il y a une alternative pour ceux qui n'y ont pas accès à cron ou qui ne veulent pas coder eux même: http://webcron.org.  Mais c'est quand même mieux quand on peut être indépendant de ce genre de services!

Enfin... chacun sa philosophie ;o)

signaler à un administrateur
Commentaire de OriOn le 13/01/2005 07:32:39 administrateur CS

N'empêche que webcron.org rend bien des services...

signaler à un administrateur
Commentaire de malik7934 le 13/01/2005 09:46:06

Absolument, je dis pas le contraire! C'est juste que je fais parti de ceux qui aiment leur indépendance ;o)

signaler à un administrateur
Commentaire de pianiste2005 le 13/01/2005 20:56:18

une très bonne idée franchement MERCI!

signaler à un administrateur
Commentaire de jdalton42 le 06/03/2005 17:24:24

magnifique source!
merci, cela fait trés longtemps que je cherchais une source comme celle la!(je savais pas trop comment faire je connaissais pas cron avant!) merci je te mes 10/10 !!

signaler à un administrateur
Commentaire de teacherfred le 14/03/2005 17:30:31

Salut à tous,

moi aussi j'ai du mal à trouver un truc infaillible pour lancer un script sans passer par webcron : quel hébergeur propose cron ?... çà m'intéresse !

merci d'avance

signaler à un administrateur
Commentaire de jdalton42 le 19/03/2005 21:45:45

Salut,

teacherfred --> je connais quelqu'un qui vien d'acheter son propre serveur dédié et qui lance des hebergement soit gratuit soit payant, bon le site est pour l'instant un peux naze (sans design ni formulaire d'inscription) tien le site c'est http://performant-hosting.com

signaler à un administrateur
Commentaire de jdalton42 le 19/03/2005 21:47:43

et au fait, sur ce site il y on mi la table de contrôle "directadmin" et tu sais acceder a cron

signaler à un administrateur
Commentaire de ouga78 le 13/10/2005 20:52:52

super source, c'est exactement ce que voulais merci :) 10/10

signaler à un administrateur
Commentaire de CChargy le 01/02/2006 14:15:45

Bonjour est-ce que sa fonctionne chez Free?
Merci d'avance

Colin CHARGY

signaler à un administrateur
Commentaire de CChargy le 01/02/2006 14:18:23

Bonjour,
Est-ce sa fonctionne chez Free?
Merci d'avance

Colin CHARGY

signaler à un administrateur
Commentaire de Anthomicro le 01/02/2006 18:13:24

Salut,

non ça fonctionne pas chez free, free est un hébergement mutualisé.

a +

signaler à un administrateur
Commentaire de CChargy le 01/02/2006 20:01:44

Est-ce ce kil egsite une solution chez Free? Sacahnt que je cherche a éxécuter une page tt le temps. . . ou une page pendant 30sec puis une page pendant 30sec etc. . . mais il faut les démarer.

Comment feriez vous?

Colin CHARGY

signaler à un administrateur
Commentaire de malik7934 le 02/02/2006 06:30:48

-> webcron.org

signaler à un administrateur
Commentaire de CChargy le 03/02/2006 18:54:43

Je re di ce ke g di:
il me faut pouvoir éxévuter une page CHAQUE 30 SECONDE webcron -> chaque heure maxi

si vous avez  une autre solution?

Colin CHARGY

signaler à un administrateur
Commentaire de Anthomicro le 03/02/2006 19:03:57

Y'en a pas d'autre à moins de passer par deux pages qui vont se rafraîchir mutuellement (l'une appelant l'autre ce qui fait que tu n'as plus la limite du timeout) et puis sur l'une bah tu fous unf ichier qui va stocker le time() actuel et vérifier si ça fait trente secondes ou pas, m'enfin bon tu ne pourras pas sans un utilisateur qui navigue sur ton site, donc à laisser tomber, et tu risques de voir ton site fermé pour saturation de ressources.

signaler à un administrateur
Commentaire de djshaker le 10/12/2006 14:29:56

Ce script m'a l'air génial !!
Seul petite question, quel est l'utilisateur que l'on doit mettre,
et comment on lui donne les droits pour ajouter un Cron?

Merci bien.

signaler à un administrateur
Commentaire de travailmichel le 23/03/2007 17:34:18

bonjour

je suis sous dedié sivit

j'ai changé

if(passthru('crontab root cront.cron')) mais il ne prends pas la requete!!

merci de m'explique le truc

signaler à un administrateur
Commentaire de Tourach le 24/04/2007 11:40:55

Une très belle explication qui m'aura fait gagner une demi journée de travail :)

Merci à toi ^^

signaler à un administrateur
Commentaire de astuces_jeux le 25/06/2007 21:54:44

Bonjour,

Warning: fopen(cront.cron) [function.fopen]: failed to open stream: Permission denied in /home/cdd/domains/cdd-pro.com/public_html/dinolife/maj/cron.php on line 46

Warning: fputs(): supplied argument is not a valid stream resource in /home/cdd/domains/cdd-pro.com/public_html/dinolife/maj/cron.php on line 47
Erreur! La requete php -f n'a pas ete enregistree!

Je dois faire quoi ???
Je suis héberger par 1eurohosting http://www.1eurohosting.be
Et les informations php.ini de mon hébergement : http://www.cdd-pro.com/php.ini

signaler à un administrateur
Commentaire de jdalton42 le 25/06/2007 23:43:41

utilise filezilla pour te connecter au ftp, ensuite clique droit sur le fichier > atribut fichier et met le en chmod 755 voir 777...

signaler à un administrateur
Commentaire de Antoine59840 le 30/07/2007 01:57:08

Bizarre moi il me dise
Que la requete a ete enregistrer
et en dessous la requete n'a pas ete enregistre
apres je vais voir cront.cron
Et il me donne toutes les requetes j'ai essaye mais sa marche pas
:'(

signaler à un administrateur
Commentaire de Antoine59840 le 30/07/2007 01:59:23

La requete 0 2 * * * php -f http://antoine59840.free.fr/test.php a ete enregistree
Erreur! La requete 0 2 * * * php -f http://antoine59840.free.fr/test.php n'a pas ete ajoutee a la liste des taches!

signaler à un administrateur
Commentaire de Oxydoreduction le 17/08/2007 17:23:01

Super idée. Par contre faut avoir un 777 sur le fichier cron. Et là c'est pas gagné...
Pareil que webcron t'a www.saint-pitoune-la-creuviere.com aussi qu'est sympa (fo se taper l'adresse à ralonge mais bon, c'est rigolo). Mais faut avoir un script accessible par http... attention aux activations non sollicitées.

signaler à un administrateur
Commentaire de malik7934 le 17/08/2007 17:27:20

J'ai fais un saut sur st-pitoune...
"tu t’inscrits ici, et tu te laisses guider. Un coup d’AlloPass et tu t’ouvres 200 requêtes minimum."

Payer pour ça? Non, merci...

signaler à un administrateur
Commentaire de Oxydoreduction le 20/08/2007 11:32:32

Ouaif, bon, c'est pas ce qui m'a arrêté. Suis-je le seul a faire un don Paypal quand j'utilise un open-source ou un truc du genre ?... nooon, allez, me faites pas peur ! lol.

Pour être plus constructif, et être plus clair à propos du "activations non sollicitées", avec un cron en http, il peut-être interessant de penser à proteger son script avec un .htaccess pour être sûr que c'est pas un lambda qui vous le déclanche. (bon, y'a ça sur Saint Pit', ma curiosité m'ayant piqué, je me suis inscrit a webcron mais j'ai pô encore reçu mon code :-( ).
En fait, je vous parle d'expérience, j'ai un petit malin (de mes amis) qui me déclanchait un script de sauvegarde de ma base de données toutes les deux minutes (vu que c'était un peu lourd, il m'a ralenti le serveur sérieux pendant deux jours avant que je m'en apperçoive).

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode



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,140 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é.