Bonjour,
J’avais détecté il y a quelques temps une fuite mémoire. D’ailleurs le plugin affiche la mémoire occupée par le demon et utilise gc_collect_cycles() toutes les 60s mais depuis quelques mois, plus de problèmes.
je tourne actuellement à :
Memory used :3870 ko 80 o
→ tu devrais avoir ce message dans les logs du plugin
Solution 1
prendre la beta pour V4 uniquement, j’ai fait pas mal fait le ménage dans le demon.
Solution 2 (palliatif)
utiliser le heartbeat fourni dans la config du plugin
Solution 3 (palliatif que j’utilise pour le plugin Mysensors car déconnexion de l’USB de temps en temps)
Mesurer la taille mémoire et se fixer une taille mémoire max (ce qui est mieux que le heartbeat) et dans un bloc code de scenario
message::add(‹ Scénario ›, ‹ Fuite mémoire WifilightV2 ›);
wifilightV2::deamon_start()
Eventuellement, me donner des stats avec cette dernière méthode
J’ai publié ce message dans le salon des développeurs en juin :
Bonjour,
Je voudrais signaler un bug concernant :
$buf = socket_read($socket, 1024);
socket_read() a une fuite de mémoire de quelques octets à chaque fois qu’elle est appelée.
Quand c’est dans un script, pas de souci, la mémoire est rétablie à la fin.Par contre si elle est utilisée à l’intérieur d’un démon dans une boucle sans fin ce memory leak fini par croitre dangereusement.
De plus, au début il n’y a pas de fuite, puis au bout de quelques heures, la fuite commence pour, en plus, augmenter.
Au final le système n’a plus de mémoire et il faut relancer le démon pour revenir à la normale (cependant Jeedom semble être équipé de ce qu’il faut car il relance automatiquement le démon).
Si cela peut aider pour ceux qui auraient des pertes de mémoire
Les parties du plugin qui utilisent un socket_read :
\plugins\wifilightV2\3rdparty\tplink.php
Line 280: $out = socket_read($socket, 1024);
\plugins\wifilightV2\core\class\wifilightV2.class.php (2 hits)
Line 472: $stringCom = socket_read($clientsock, 4096);
Line 570: $buf = socket_read($socket, 1024);
les 2 derniers sont utilisés par les périphériques tuya et ewelink dans le demon et sont abondamment utilisés.
le premier est appelé par le demon mais rarement.
Difficile de t’aider mieux que cela à distance.