Hello,
quelqu’un aurait un exemple d’un plugin avec un daemon jeedom fait en PHP ?
(pour la partie forever loop mais surtout gestion de mémoire (pour pas tout bouffer) ou/et thread)
Hello,
quelqu’un aurait un exemple d’un plugin avec un daemon jeedom fait en PHP ?
(pour la partie forever loop mais surtout gestion de mémoire (pour pas tout bouffer) ou/et thread)
Bonjour,
Regarde le plugin sonos tu as tout dedans. Tu n’as pas a gérer la loop.
merci je vais voir
Je déterre un peu le sujet pour avoir quelques infos sur la mise en place d’un démon en PHP.
Pour l’instant, j’utilise la mise en place d’un nouveau process avec le lancement d’un fichier PHP contenant une boucle infinie (while true) qui capte tous les changements (via écoute des messages après connection sur un port spécifique de mon équipement, en telnet).
Je trouve ça un peu « grade » comme méthode, mais n’ayant pas trouvé de doc sur la question et n’étant pas familier avec ce type de process je n’ai pas trouvé mieux.
J’ai regardé un peu le plugin sonos et la mise en place de son démon, mais certaines choses m’échappent.
Si j’ai bien compris, le lancement du démon se fait via la mise en place d’un cron :
$cron = cron::byClassAndFunction(‹ sonos3 ›, ‹ pull ›);
Le cron exécutera (sous quelle fréquence d’ailleurs ?) la fonction visible plus bas et nommée pull. J’ai bon ?
Ensuite, la fonction pull contient tous les éléments nécessaires pour capter et mettre à jour les infos du plugin, donc si j’ai bien compris, tout ce que moi j’ai dans ma boucle infinie ?
Merci d’avance pour votre éclairage sur la question !
Si vous avez des extraits de code simple, je suis également preneur
oui donc plus besoin de faire une boucle infinie, la fonction pull est lancée toutes les minutes (* * * * * *).
ok ca veut dire une certaine latence (moins de 60 sec) mais généralement pas besoin de plus…
pour les extraits, tout est dans le plugin sonos
En mode demon tu indique un paramètre de cycle et ta fonction sera appelé toute les X seconde de ce paramètre.
Si tu mets 1s ta fonction sera appelé toute les secondes.
Ok, merci pour vos infos.
Dans le plugin Sonos, je vois que lors de l’instal, les paramètres du cron sont définit dont :
$cron->setDeamonSleepTime(3);
$cron->setSchedule(‹ * * * * * ›);
Si je souhaite que mon cron tourne toutes les secondes, je passe du coup setDeamonSleepTime à 1 et je supprimer la ligne avec setSchedule.
Je pars du principe que setDeamonSleepTime s’exprime en seconde (non précisé dans la doc de l’API) et que la ligne setSchedule sert pour une planification plus large ?
EDIT Je m’auto-corrige après quelques tests, la ligne setSchedule est à garder, celle avec setDeamonSleepTime représente bien le délai d’éxécution du daemon en seconde.