Injecter ses crontabs depuis un script PHP

Ce howto fait suite à une demande qui nous est faite de temps en temps.
Certains clients nous demandent en effet comment ils peuvent, depuis un script PHP, mettre à jour leurs crontab.

Ce howto n’a pas pour vocation d’expliquer les bases des crontabs, orientez-vous plutôt vers Wikipedia : Crontab pour cela.

Exemple de script PHP

Nous rappelons que vous devez avoir accès aux crontabs pour le compte en question, consultez l’administrateur de votre serveur.

Voici un script exemple (non testé).

N’hésitez pas à nous contacter si nécessaire.

{literal}

 array('pipe', 'r'),
            1 => array('pipe', 'w'),
            2 => array('pipe', 'w')
    );
    unset($pipes);
    $p = proc_open('crontab', $descriptorspec, $pipes);
    if($p===FALSE) return false;
    $t=@fwrite($pipes[0], $crons);
    if($t===FALSE) return false;
    @fclose($pipes[0]);
    @fclose($pipes[2]);
    @fclose($pipes[1]);
    @proc_close($p);
}
$crons  = '';
$crons .= '# ma tache cron toutes les minutes ' . "\n";
$crons .= '* * * * * php -q /home/monsite/cron.php5 >/dev/null 2>&1' . "\n";
$crons .= '# une autre tache cron toutes les 5 minutes ' . "\n";
$crons .= '*/5 * * * * php -q /home/monsite/genindex.php5 >/dev/null 2>&1' . "\n";
redefinirCron($crons);
?>

{/literal}

Mots-clefs :,