Déclenchement programmé UNIQUE : plus si unique ?!

Hello,

edit : le problème ne provient pas de la version de php, mais de la version de la librairie utilisée par le core. Toutes les nouvelles installations pourraient donc avoir le problème.
problème que je rencontre sous php8 (debian12) et non en php7 (debian11).
devant le nombre grandissant de post où l’on voit des utilisateurs indiquant migrer sous debian 12, je me permets un petit warning …

sur un scénario, je choisis le mode « programmé », puis j’utilise l’assistant cron pour définir une exécution unique :

je fais donc les choix :

  • une seule fois
  • ma date (volontairement dans le passé ici pour l’exemple) → le 11 Juin 2024 à 16h00

valide, puis sauvegarde l’équipement.
je peux donc voir les dates des précédents & prochains lancements :

la date du 11 juin (la seule voulue !) est bien renseignée comme précédente

mais … j’ai aussi une prochaine échéance qui est calculée … à aujourd’hui 16h !
( → et les actions seront bien effectuées à 16h !)

du coup … la programmation initialement choisie n’est plus si unique que ça.

Quelle drôle d’idée de vouloir programmer quelque chose dans le passé !

Quelle drole d idee de ne pas lire tous les mots d un post …

Mais merci pour cette reponse qui fait bien avancer les choses :+1:

5 « J'aime »

Hello,

J’y connait pas grand chose dans le domaine « composer », mais :

la lib ne serait pas bloqué a la version v2.3.1 ? donc peut-être pas totalement compatible php8 ?

Edit:

Après une petite recherche sur le community, il semble que la lib soit bien plus récente (3.3.3).

c’est aussi la version que j’ai sur ma prod et ma dev principale

le résultat au final n’est pas vraiment un « lancement uniquement » non plus puisque les mêmes inputs donnent déjà actuellement deux dates différentes :

bon ya 6 ans de décalage, donc entre temps mon scénario aura surement été mis à la poubelle :slight_smile:


par contre en restant sur ma dev principale (donc php7) et en faisant un composer update → on passe bien sur la derniere version du package 3.3.3 ( → version que j’ai bien eu automatiquement lors de l’install « standard » sur D12/php8 !!)

 {
            "name": "dragonmantank/cron-expression",
            "version": "v3.3.3",
            "source": {

et sans rien changer, mais simplement en faisant un « sauvegarder » sur le scénario, on retombe bien avec mes premiers screenshots (enfin presque puisque 16h est déjà passé) :

→ d’une diff de 6 ans, on passe à une différence de 7 jours cette fois ci !
qui semble là du coup un peu + problématique … :confused:

Pour moi ce comportement c’est « normale », CronTab n’accepte pas une année, donc le core le supprime avec checkAndFixCron tu as donc un cronTab 00 16 11 06 2 donc la prochaine fois qu’on sera le 11 juin un mardi c’est bien en 2030.

La par contre j’ai pas la cause, mais la lib est forcémément en cause.

Ah zut, après avoir refait un jquery maison va falloir refaire les libs composer maison aussi…

Petit message vite fait :grin:,

Il semble que la lib lors du composer, soit effectivement la dernière.
Et elle ne semble pas prête pour php > 8.0, il y a d’ailleurs un PR sur celle-ci pour diminuer le require en 8.0.

Il y a donc bien un soucis avec les Cron, pour les fresh install…

@tomitomas a fait pas mal de test pour confirmer ce bug, il donnera sans doute plus d’informations :wink:

Bonjour,

Pas drole cette histoire car la lib va vraiment pas etre simple a refaire… On va esperer que le PR va etre accepté.

Bonjour Loic,

Justement non, j’espère qu’il vont trouver une solution pour rendre compatible > 8.0, car le PR actuel c’est juste pour diminuer le require a 8.0, donc incompatible avec Deb12.

Je craint quon soit obliger de fixer la lib en 2.3.1, en attendant.

J’ai légèrement modifié mon post initial, puisque le problème ne vient pas de la version de php, mais de la version de la librairie « dragonmantank/cron-expression » utilisée.

A date une fresh install, partira sur la dernière version de la librairie → 3.3.3
alors que les anciennes versions seront (la plupart ?) en → 2.3.1

La gestion de la position « année » a été dépréciée depuis plusieurs versions (et là c’est un peu le bordel car je n’ai pas réussi à trouver laquelle).

Toujours est il qu’avec le core Jeedom et la lib en 2.3.1 => ca « fonctionne » ( modulo le fait qu’on soit quand même à +6ans sur la "prochaine exécution)
Si on passe sur la version toute de suite supérieure 3.0.0 ==> ca ne fonctionne plus et on repasse à la prochaine date à +7 jours → et là c’est problématique !

La PR cité par @Phpvarious ne changera rien, au contraire elle limite l’utilisation à php8.0, mais ca ne change pas le soucis de gestion de l’année. (en plus de restreindre l’utilisation de D12)

Le dev dit à plusieurs reprises dans différents issue qu’il a arreté de gérer l’année pour être plus aligné avec les standard de cron et qu’il ne reviendrait pas dessus.

Deprecated CronExpression::YEAR as a formality, the functionality is already removed (#87)

se limiter à la version 2.3.1 est dommage car les nouvelles versions apportent aussi pleins de petite choses sympathiques !

du coup attendre pour une maj de la lib n’aura que peu d’effet pour moi.
il faudrait plutôt que le core gère les cas où il y a cette 5e position ‹ année › → si c’est le cas, alors vérifier que la date existe et est cohérente et enregistrer cette uniquement date comme précédente/suivante, sans utiliser la class cronExpression.

2 « J'aime »

Bonjour,
Ok merci pour le retour, quand on lancera jeedom 4.5 une revu de composer va etre faite on passera donc a la version 3.X de la lib et jeedom ne supportera plus l’année (a voir comment gerer mais je vois pas comment le faire en interne c’est beaucoup trop lourd).

Voila l’issue [BUG] In php8 issue with cronExpression lib does not handle year anymore · Issue #2698 · jeedom/core (github.com)

1 « J'aime »

:+1:
tu peux juste remplacer le « In php8 » par « From v3.3.0 » du titre pour etre parfait :wink:
puisque le problème ne vient pas de la version de php8, et est déjà reproductible en D11/php7

Oui mais tu n’as pas cette version si tu es pas en php8.

Pour info j’ai fait toute les corrections en alpha à tester maintenant

J’ai fait une fresh install

en core Alpha à cette heure :
image

en debian11/php7 :

je confirme qu’on reste sur la lib v2.3.1

en debian12/php8 :

la lib est en version v3.3.3 comme attendu

le scénario en mode programmé donne toujours le même mauvais résultat :


demandé : 27/06/2024 à 16h00
prochain lancement : 20/06/2024 à 16h00

et tes modifs ont bien été tirées :



[hors-sujet]

1er point

bizarre lors de l’install :

tomtom@debian11:~$ wget https://raw.githubusercontent.com/jeedom/core/alpha/install/install.sh
tomtom@debian11:~$ chmod +x install.sh
tomtom@debian11:~$ sudo ./install.sh version=alpha
Welcome to Jeedom installer
Jeedom version : V4-stable    <<<<<-------- ?????? 
Web folder : /var/www/html
Installation type : standard
Starting installation ...

pourquoi Jeedom version : V4-stable alors que je demande l’install en alpha !?

EDIT :
je m’auto réponds sur ce point, la bonne syntaxe c’est :
./install.sh -v alpha
et non pas ./install.sh version=alpha comme indiqué dans la doc d’install
→ dernière ligne à modifier : Documentation Jeedom

2nd point

FYI : par contre j’ai un msg d’erreur au 1er lancement pour un plugin « introuvable » - fresh install et je ne connais pas ce plugin de base

[/hors-sujet]

Étrangeté aussi observée ici : Class 'jMQTTDaemon' not found

Merci pour le retour c’est corrigé.

Salut @Loic

la PR a été fermée, bien que le problème ne soit pas résolu.
est ce voulu ?

après échanges et tests avec Loic sur git :
pour php7 → corrigé en 4.4.8/4.4.8.1
pour php8 → corrigé en 4.4.9

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.