IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Fonction périodique d'exécution d'un script


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Par défaut Fonction périodique d'exécution d'un script
    Bonjour,

    J'avais besoin de faire une fonction me permettant d'exécuter certains scripts selon un planning assez simple.

    2 paramètres d'exécution :
    - le jour de la semaine de 0 à 6
    - la périodicité de traitement 1 = quotidien, 7 = hebdomadaire, 14 = quinzaine, 28 = mensuel

    et "echo "<br>".date("Y-m-d");" étant remplacé par l'appel du script attendu.

    J'ai donc fait la fonction ci-après, mais y aurait-il eu une autre façon de faire ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    function trtPeriodique($periodicite = 28, $jour_de_la_semaine = 0)
    {
    	// On prend le 1er jour du mois
    	$jour = 1;
    	$mois = date("m");
    	$annee = date("Y");
    	// On recherche quel jour de la semaine c'est
    	$premier_jour_mois = date("w", mktime (0,0,0,$mois,$jour,$annee));
    	// On recherche l'écart qu'il y a entre le n° dans la semaine du jour du 1er du mois et le n° de jour recherché
    	$ecart_jour = $jour_de_la_semaine - $premier_jour_mois;
    	// On ajoute l'écart qui sépare les n° du jour dans la semaine en ajoutant 1 (le dimanche étant le 0)
    	if($ecart_jour > 0) $jour_traitement = $jour + $ecart_jour;
    	else if($ecart_jour < 0) 
    	{
    		$jour_traitement = $jour + 7 - 1;
    	}
    	else $jour_traitement = $jour;
    	// Calcul de la date de 1er traitement
    	if($jour_traitement < 10) $jour_traitement = "0".$jour_traitement;
    	$date_premier_traitement = $annee."-".$mois."-".$jour_traitement;
    	// Sommes nous le jour de 1er traitement ?
    	// Date valable pour toutes les périodicités
    	if($date_premier_traitement == date("Y-m-d"))
    	{
    		echo "<br>".date("Y-m-d");
    	}
    	// Calcul des autres dates de traitement en fonction de la périodicité
    	// bi-mensuel
    	if($periodicite == 14)
    	{
    		$jour_traitement = $jour_traitement + $periodicite;
    		$date_traitement_suivant = $annee."-".$mois."-".$jour_traitement;
    		if($date_traitement_suivant == date("Y-m-d"))
    		{
    			echo "<br>".date("Y-m-d");
    		}
    	}
    	// Hebdomadaire
    	if($periodicite == 7)
    	{
    		if($jour_de_la_semaine == date("w"))
    		{
    			echo "<br>".date("Y-m-d");
    		}
    	}
    	// Quotidien
    	if($periodicite == 1 && $date_premier_traitement != date("Y-m-d"))
    	{
    		echo "<br>".date("Y-m-d");
    	}
    }
    Merci d'avance

  2. #2
    Membre émérite
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Par défaut
    Tu pourrais recuperer les jours moi et semaine, et faire un switch ?
    Donc appeler une fonction differente a chaque case

  3. #3
    Membre éprouvé Avatar de lodan
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 064
    Par défaut
    Merci,

    Cela changerai la présentation de mon code, qui serait plus facile à lire et donc à maintenir.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 24/08/2012, 17h54
  2. Réponses: 10
    Dernier message: 18/06/2012, 19h51
  3. Le temps d'exécution de vos scripts perl!!
    Par djibril dans le forum Langage
    Réponses: 5
    Dernier message: 17/06/2009, 11h42
  4. Réponses: 3
    Dernier message: 27/09/2008, 12h46
  5. Réponses: 6
    Dernier message: 29/11/2005, 14h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo