Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

Programmation.c : Cron ou sleep() ?

Posté par Ludovic Rivallain (aka Creasy) (page perso, ) le 17 mars 2008

Bonjour,



Je me colle d'ici peu au codage d'un petit programme qui vérifiera chaque minute la correspondance entre l'heure actuelle et l'heure de réveil demandée par des utilisateurs d'un service téléphonique basé sur Asterisk (info placée dans un fichier).



J'avais déjà le même programme codé avec les pieds et en bash (vite fait, bien fait fonctionnel, mais comme le nombre d'utilisateurs explose, j'ai décidé de le recoder en C (et avec les mains cette fois) pour réduire le temps d'exécution et limiter la consommation de performances.



Avant j'utilisais cron pour lancer chaque minute ce petit script.



J'en viens à ma question:

Est-il plus "performant" d'utiliser cron pour ce genre de tâche (lancer le programme toutes les minutes) ou d'utiliser un "sleep()" dans le programme (qui sera lancé en daemon du coup) avec un temps de repos variable selon le temps qu'a duré l'exécution?



(non je ne cherche pas à créer un nouveau troll cron Vs sleep() ;-) )



Et quels sont les avantages/inconvénients de ces deux solutions?



En gros si j'utilisais "sleep()" j'imagine un truc comme:

  1. Exécution du programme,
  2. Juste avant la fin on regarde qu'elle heure il est et on en déduis le temps qu'il reste jusqu'à la prochaine minute,
  3. On patient le temps calculé,
  4. On reboucle en "1".


Merci d'avance pour vos lumières.



Ludo,

> Lire le message (13 commentaires, moyenne: 2,5).  

Vous avez demandé le commentaire #914325.

Asterisk auto-dialout ! ! !

Posté par KiKouN (Jabber id, ) le 17/03/2008 à 14:25. (lien). Évalué à 5.

Je te conseille de jeter un coup d'oeil là dessus:

http://www.voip-info.org/tiki-index.php?page=Asterisk+auto-d(...)

En gros, cela permet détablir un appel à partir d'un fichier que tu place au bonne endroit. Un petit plus de cela, c'est que si la date de dernière modification est dans le futur, ce fichier est ignoré jusqu'à cette date. A ce moment seulement, asterisk exécute les instructions de ce fichier.

Si tu te demerde bien, tu peux facilement faire un réveil en utilisant uniquement asterisk et son extension.conf et ce pour un réveil unique ou journalier. Ainsi, pas besoin de cron, pas besoin de script extérieur. Un script AGI peut facilité la tache toutefois.

Il y a un même un lien vers un exemple pour faire un réveil sur cette page.

--
KiKouN, Bucheron-Geek
  • [^]Re: Asterisk auto-dialout ! ! !

    Posté par Ludovic Rivallain (aka Creasy) (page perso, ) le 17/03/2008 à 16:11. (lien). Évalué à 3.

    L'idée d'utiliser "auto-dialout" n'est pas mauvaise mais oblige à revoir d'autres choses que ce programme. Notamment l'interfaçage web.

    Toutefois, tu me fais découvrir quelque chose que je ne connaissais pas et qui peut m'intéresser à l'avenir ;-)

    Merci

    Ludo,