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 :

Mettre en place un CRON avec PHP


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 676
    Points : 121
    Points
    121
    Par défaut Mettre en place un CRON avec PHP
    Bonjour,

    J'ai fait un système en PHP qui se met en place sur n'importe quel serveur Debian et je suis en train de créer un installeur qui crée la base de données, les fichiers config, etc.
    J'ai un problème au niveau du CRON qui doit se créer automatiquement. Je sais qu'on peut communiquer avec Linux grâce à la commande system le soucis c'est que pour créer un CRON il faut d'abord entrer dans le programme avec :
    puis exécuter la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     */5 * * * * root lynx -dump http://site.org/cron.php
    Et si on fait 2 system successifs ça ne passe pas. Du coup je voulais savoir quelle était la manière la plus élégante de procéder sachant qu'il ne faut pas que ça soit manuel

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 676
    Points : 121
    Points
    121
    Par défaut
    Merci pour ton article mais je viens d'essayer ça :

    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    <?php
     
    $debut = '#Les lignes suivantes sont gerees automatiquement via un script PHP. - Merci de ne pas editer manuellement';
     
     
     
    $fin = '#Les lignes suivantes ne sont plus gerees automatiquement';
     
     
     
    function ajouteScript($chpHeure, $chpMinute, $chpJourMois, $chpJourSemaine, $chpMois, $chpCommande, $chpCommentaire)
     
    {
     
            $oldCrontab = Array();                          /* pour chaque cellule une ligne du crontab actuel */
     
            $newCrontab = Array();                          /* pour chaque cellule une ligne du nouveau crontab */
     
            $isSection = false;
     
            $maxNb = 0;                                     /* le plus grand numéro de script trouvé */
     
            exec('crontab -l', $oldCrontab);                /* on récupère l'ancienne crontab dans $oldCrontab */
     
     
     
            foreach($oldCrontab as $index => $ligne)        /* copie $oldCrontab dans $newCrontab et ajoute le nouveau script */
     
            {
     
                    if ($isSection == true)                 /* on est dans la section gérée automatiquement */
     
                    {
     
                            $motsLigne = explode(' ', $ligne);
     
                            if ($motsLigne[0] == '#' && $motsLigne[1] > $maxNb)     /* si on trouve un numéro plus grand */
     
     
     
                            {
     
                                            $maxNb = $motsLigne[1];
     
                            }
     
                    }
     
     
     
                    if ($ligne == $debut) { $isSection = true; }
     
     
     
                    if ($ligne == $fin)                     /* on est arrivé à la fin, on rajoute le nouveau script */
     
                    {
     
                            $id = $maxNb + 1;
     
                            $newCrontab[] = '# '.$id.' : '.$chpCommentaire;
     
     
     
                            $newCrontab[] = $chpMinute.' '.$chpHeure.' '.$chpJourMois.' '.
     
                                    $chpMois.' '.$chpJourSemaine.' '.$chpCommande;
     
                    }
     
     
     
                    $newCrontab[] = $ligne;                 /* copie $oldCrontab, ligne après ligne */
     
            }
     
     
     
            if ($isSection == false)                        /* s'il n'y a pas de section gérée par le script */
     
            {                                               /*  on l'ajoute maintenant */
     
                    $id = 1;
     
                    $newCrontab[] = $debut;
     
                    $newCrontab[] = '# 1 : '.$chpCommentaire;
     
     
                    $newCrontab[] = $chpMinute.' '.$chpHeure.' '.$chpJourMois.' '.$chpMois.' '.$chpJourSemaine.' '.$chpCommande;
                    $newCrontab[] = $fin;
            }
     
            $f = fopen('/tmp', 'w');                        /* on crée le fichier temporaire */
            fwrite($f, implode('\n', $newCrontab)); 
            fclose($f);
     
            exec('crontab /tmp');                           /* on le soumet comme crontab */
     
            return  $id;
    }                               
     
    ajouteScript('*','*/5','*','*','*','lynx -dump http://site.org/cron.php','mon Cron');
    et ça ne marche pas. Il doit y avoir un soucis dans la méthode

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 676
    Points : 121
    Points
    121
    Par défaut
    C'est bon.

    Il y avait des petites erreurs dans le script

    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
    52
    53
    54
    55
    56
    57
    58
    59
    <?php
     
     
     
    function ajouteScript($chpHeure, $chpMinute, $chpJourMois, $chpJourSemaine, $chpMois, $chpCommande, $chpCommentaire)
    {
    	$debut = '#Les lignes suivantes sont gerees automatiquement via un script PHP. - Merci de ne pas editer manuellement';
    	$fin = '#Les lignes suivantes ne sont plus gerees automatiquement';
     
    	$oldCrontab = Array();                          /* pour chaque cellule une ligne du crontab actuel */
    	$newCrontab = Array();                          /* pour chaque cellule une ligne du nouveau crontab */
    	$isSection = false;
     
    	$maxNb = 0;                                     /* le plus grand numéro de script trouvé */
    	exec('crontab -l', $oldCrontab);                /* on récupère l'ancienne crontab dans $oldCrontab */
     
    	foreach($oldCrontab as $index => $ligne)        /* copie $oldCrontab dans $newCrontab et ajoute le nouveau script */
    	{
    		if ($isSection == true)                 /* on est dans la section gérée automatiquement */
    		{
    			$motsLigne = explode(' ', $ligne);
    			if ($motsLigne[0] == '#' && $motsLigne[1] > $maxNb)     /* si on trouve un numéro plus grand */
    			{
    							$maxNb = $motsLigne[1];
    			}
    		}
     
    		if ($ligne == $debut) { $isSection = true; }
     
    		if ($ligne == $fin)                     /* on est arrivé à la fin, on rajoute le nouveau script */
    		{
    				$id = $maxNb + 1;
    				$newCrontab[] = '# '.$id.' : '.$chpCommentaire;
    				$newCrontab[] = $chpMinute.' '.$chpHeure.' '.$chpJourMois.' '.
    						$chpMois.' '.$chpJourSemaine.' '.$chpCommande;
    		}
     
    		$newCrontab[] = $ligne;                 /* copie $oldCrontab, ligne après ligne */
    	}
     
    	if ($isSection == false)                        /* s'il n'y a pas de section gérée par le script */
    	{                                               /*  on l'ajoute maintenant */
    			$id = 1;
    			$newCrontab[] = $debut;
    			$newCrontab[] = '# 1 : '.$chpCommentaire;
     
    			$newCrontab[] = $chpMinute.' '.$chpHeure.' '.$chpJourMois.' '.$chpMois.' '.$chpJourSemaine.' '.$chpCommande;
    			$newCrontab[] = $fin;
    	}
     
    	$f = fopen('/tmp/cron', 'w');                        /* on crée le fichier temporaire */
    	fwrite($f, implode("\n", $newCrontab)); 
    	fclose($f);
     
    	exec('crontab /tmp/cron');                           /* on le soumet comme crontab */
    	return  $id;
    }                               
     
    ajouteScript('*','*/5','*','*','*','lynx -dump http://site.org/cron.php','mon Cron');

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 04/12/2014, 20h14
  2. Mettre en place un bouton avec un son associé
    Par napani dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/03/2011, 12h48
  3. Peut-on mettre en place des séparateurs de milliers en PHP ?
    Par Yagami_Raito dans le forum Langage
    Réponses: 2
    Dernier message: 06/06/2007, 16h00
  4. Comment mettre en place un Jlabel avec une image de fond?
    Par jlassiramzy dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 08/05/2007, 18h52
  5. [Système] Quotas de place avec PHP?
    Par Imanol dans le forum Langage
    Réponses: 1
    Dernier message: 09/08/2006, 04h41

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