Problème de configuration php-crontab linux

hakimnounous Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour à tous,je dois concevoir un programme qui permet d'ajouter une tâche à crontab.

Pour être plus clair je travaille en open source Linux et j'ai une interface web qui demande à l'utilisateur la commande et l'heure à laquelle il veut que cette commande soit exécuter,et une fois ces informations fournies,il clique sur le bouton valider et des instructions php enregistrent la tâche planifiée ainsi sous le fichier crontab.

Quelqu'un peut-il me dire comment ajouter une nouvelle tâche crontab avec php.
Merci d'avance.

3 réponses

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    Le mieux serait de lire la documentation sur cron (et éventuellement anacron) ou son alternative (fcron) pour voir la syntaxe :
    http://doc.ubuntu-fr.org/cron
    http://doc.ubuntu-fr.org/anacron
    http://doc.ubuntu-fr.org/fcron

    Note que pour manipuler la crontab, normalement il faut des droits root (administrateur). Il faudra donc sans doute regarder aussi du côté de suphp.
    http://doc.ubuntu-fr.org/suphp

    Bonne chance
    0
  2. hakimnounous Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
     
    Merci bien cela m'aide à comprendre le syntaxe des fichiers cron mais c'était pas exactement la question.

    Je voulais dire comment écrire le code source en langage PHP ou quels sont les commandes php qui renvoient une tâche ou une commande à exécuter à une date précise en l'écrivant dans le fichier crontab.

    j'ai bien su que c'est grâce aux fonctions exec() et fwrite () mais je ne sais pas exactemen comment??
    0
  3. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    Bah si tu veux ouvrir un fichier il faut utiliser fopen et contrôler le retour pour voir si tout va bien (le fichier peut être créé / modifié, sous entendu les droits sont corrects, le répertoire dans lequel il se trouve existe...).

    Si ça a marché (fp !== NULL) tu peux écrire dedans et le fermer quand tu as fini. Tu peux regarder sur php.net pour avoir des exemples :
    https://www.php.net/manual/en/function.fopen.php

    $filename = "/home/toto/pouet.txt";  
    $prenom = "Toto";  
    $fp = fopen($filename, "w");  
    if ($fp !== NULL) {  
      fprintf($fp, "coucou %s\n", $prenom);  
      fclose($fp)  
    }else{  
      echo "Impossible d'ouvrir ".$filename.", vérifiez que le fichier existe et que vous avez des droits suffisants !\n";  
    }


    Normalement tu édites tes lignes avec la commande crontab -e. Ici on te suggère d'exécuter des commandes du genre "... | crontab -e" mais à vérifier.
    https://www.daniweb.com/programming/software-development/threads/166819/how-do-i-edit-crontab-using-a-script

    Personnellement je tenterais plutôt un truc du genre basée sur EOF
    https://lists.debian.org/debian-policy/1997/12/msg00004.html

    Mets par exemple un truc du genre dans un fichier toto.sh

    #!/bin/sh  
    crontab -e << EOF  
    Première ligne à mettre dans ta crontab  
    Seconde ligne à mettre dans ta crontab
    ...
    EOF  
    


    Puis depuis php, appelle toto.sh avec exec par exemple :
    https://www.php.net/manual/en/function.exec.php

    Bonne chance
    0