Plus de fonction sleep inférieure à 1 seconde V4.1

Bonjour j’ai remarqué que les sleep de moins de 1 secondes ne fonctionnent plus en V4.1.

Voici le message que j’ai sur un scénario qui fonctionnait bien en V4.0

[2021-02-25 21:11:26][SCENARIO] Aucune durée trouvée pour l’action sleep ou la durée n’est pas valide : 0

Tu faisais ça comment ? :flushed:

Fonction sleep avec un temp à 0.5 s. J’en avais même à 0.1.

je ne sais pas ce que fait le core entre le sleep des scénarios et le sleep php mais le sleep php c’est forcément des entiers.
Sinon, passer en bloc code avec :

usleep(20000);

Arf ça me dérange pas plus que ça c’était juste pour le signaler. J’ai tout repassé à 1 s. C’était pour faire clignoter mes lumières en cas d’intrusion…du coup ça clignote juste moins vite…je suis passé d’un stroboscope à un clignotement :wink:

Bonjour,

c’est dû à ce commit: fix php sleep warning · jeedom/core@472300d · GitHub
@kiboost, une idée pourquoi avoir changé? J’ai l’impression que c’est une erreur non? on peut revenir en arrière?

D’ailleurs après il y a bien le code pour gérer le usleep sous la seconde

if ($options['duration'] < 1) {
	usleep($options['duration'] * 1000000);
	return;
}

sleep($options['duration']);
return;

Bonjour

J’ai aussi remarqué cela en fouillant dans les log suite à des soucis sur mes VR et BSO. (L’IPX800 ayant tendance à ne pas executer certaines actions quand il recoit trop d’infos d’un seul coup!)

Hello,

Également le même comportement pour des sleep inférieur à 1…


Aucune durée trouvée pour l’action sleep ou la durée n’est pas valide : 0

@kiboost @Loic

Doit on revoir nos scénarios ou un correctif est envisagé ?

Vous seriez pas en alpha ? Attention c’est de la version purement de dev donc bon vraiment pas stable.

Bonjour Loic

Non en 4.1.20 le commit cité par @Mips 3 posts au dessus est bien appliqué:
image

1 « J'aime »

Ok j’avais bien vu le soucis en alpha mais pas en stable. Ca sera donc corrigé dans la prochaine stable, merci pour le retour.

Le intval de la ligne 1312 ne va t’il pas poser problème ?

$options['duration'] = intval(evaluate($options['duration']));

Effectivement j’ai changé en floatval on verra si ca marche

La combinaison floatval / is_float fonctionne. (Même pour les nombres entiers)
Merci