Bonjour,
Si un calcul retourne des valeurs vides, nous avons dans les logs « http.error » ou « cron » une erreur « non-numeric value encountered » car le retour n’est pas 0 mais « », logique :
A non-numeric value encountered in /var/www/html/vendor/symfony/expression-language/Node/BinaryNode.php
Le nombre d’erreurs dans les logs peut augmenter rapidement à cause de cette erreur.
Exemple sur la consommation d’une prise qui vient d’être installée et qui n’a donc pas encore d’historique:
minbetween(#[Appartement][Consommation Prise][Totale]#,first day of last month 00:00:00, first day of this month 00:00:00) - maxbetween(#[Appartement][Consommation Prise][Totale]#,first day of last month 00:00:00, first day of this month 00:00:00)
Il est assez facile d’identifier l’erreur lorsqu’elle se produit dans un virtuel par exemple car nous avons l’information :
[Fri May 21 11:00:53.631645 2021] [php7:warn] [pid 16012] [client 192.168.1.XX:3106] PHP Warning: A non-numeric value encountered in /var/www/html/vendor/symfony/expression-language/Node/BinaryNode.php on line 144, referer: http://192.168.1.XX/index.php?v=d&m=virtual&p=virtual&id=206
Il vous suffit de faire un test simple comme celui-ci pour ne plus avoir l’erreur :
minbetween(#[Appartement][Consommation Prise][Totale]#,first day of last month 00:00:00, first day of this month 00:00:00) == "" ? 0 : minbetween(#[Appartement][Consommation Prise][Totale]#,first day of last month 00:00:00, first day of this month 00:00:00) - maxbetween(#[Appartement][Consommation Prise][Totale]#,first day of last month 00:00:00, first day of this month 00:00:00)
Mais il arrive que l’on n’est pas cette information (Core):
[Fri May 21 07:21:24.886391 2021] [php7:warn] [pid 16895] [client 127.0.0.1:47784] PHP Warning: A non-numeric value encountered in /var/www/html/vendor/symfony/expression-language/Node/BinaryNode.php on line 144
J’en viens à ma question.
Serait-il possible de modifier le retour par 0 au lieu de « » pour numérique? ou ajouter un test?
Merci,
Bonne journée.
Guillaume.