Exécution automatique de scripts php (cron)

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 / Exemple :


<?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...

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.