Daemon debian et execution script php
dg_dev
Messages postés
20
Date d'inscription
Statut
Membre
Dernière intervention
-
CptRomaiin Messages postés 334 Statut Membre -
CptRomaiin Messages postés 334 Statut Membre -
Bonjour,
il me faut mettre en place sur une machine debian une détection de l'arrivée d fichiers dans un répertoire pour ensuite déclenche leur traitement avec un script php.
il me semble que de mettre un daemon en place est la solution la plus pertinente pour ne pas alourdir le travail de cette machine mais je ne sais pas par quel bout le prendre ni comment ça marche.
Quelqu'un peut-il m'aider ?
D'avance Merci,
Dg_Dev
il me faut mettre en place sur une machine debian une détection de l'arrivée d fichiers dans un répertoire pour ensuite déclenche leur traitement avec un script php.
il me semble que de mettre un daemon en place est la solution la plus pertinente pour ne pas alourdir le travail de cette machine mais je ne sais pas par quel bout le prendre ni comment ça marche.
Quelqu'un peut-il m'aider ?
D'avance Merci,
Dg_Dev
6 réponses
-
Salut,
Moi je mettrais en place une tâche cron qui exécute le script php toute les 10 minutes et qui vérifie lui même si un fichier est disponible.
http://itx-technologies.com/blog/2259-executer-un-script-recurrent-avec-cron-exemples-sous-linux -
Bonjour et merci de m'avoir répondu,
J'ai bien envisagé cette solution mais il me faut réagir dès la fin d'écriture du/des fichier(s) arrivant. Du coup passer par le cron, qui au demeurant consomme plus de ressources, n'est pas la bonne solution.
Cordialement,
Dg_Dev-
Je ne pense pas que le cron consommera plus de ressources qu'un daemon. Le daemon devra être codé pour vérifier la présence du fichier régulièrement, comme une tâche cron. Par contre la tâche cron ne tourne que toute les x minutes/secondes alors que le daemon occupe la mémoire en permanence. Sachant que pour une tâche cron, si pas de fichier le traitement s'arrête donc ça fait vraiment très peu de ressources utilisées.
-
-
Oui tu as raison, reste que l'aspect séquentiel du cron me pose pb...
Dg_Dev -
si je ne m'abuse le cron ne peut descendre en dessous de la minute et je ne maitrise pas ni la taille ni le cadencement de l'arrivée des fichiers
donc faire une vérif toutes les x minutes ne convient pas... il faut vraiment réagir dès le fin d'écriture -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Si tu dois absolument réagir dès que le fichier arrive, tu peux utiliser un script dans ce genre là à lancer au démarrage de la machine (via init.d par exemple) :
#!/bin/bash while true; do nbFichiers=`ls -a /tmp/test/ | sed -e "/\.$/d" | wc -l` if [ ! $nbFichiers -eq 0 ] then nomFichier=`ls /tmp/test/` php script.php $nomFichier fi sleep 1; done exit 0
C'est qu'un exmple, il faudra surement l'améliorer. Note que la récupération du nom du fichier de cette façon ne fonctionne que si un seul fichier est présent. -
Bonjour,
merci infiniment pour cet exemple, mais peux-tu me l'expliquer ?
Merci,
Dg_Dev-
C'est une boucle infini.
la variable nbFichiers correspond au résultat de la commandels -a /tmp/test/ | sed -e "/\.$/d" | wc -l
qui renvoi le nombre de fichiers présents dans le répertoire /tmp/test
La ligne suivante vérifie si le nombre de fichiers est différent de 0. Si c'est le cas on récupère le nom du fichier présent (ne marche que si un seul fichier est présent). Ensuite tu éxécutes ton script php sur ce fichier. A la place de cette ligne tu peux mettre ce que tu veux.
Si le nombre de fichiers n'est pas différent de 0 alors on attend 1 seconde puis on recommence la boucle.
De cette manière, toute les secondes, si un fichier est présent on le traite.
Bien sur ce script est perfectible.
-