Manque une * dans le générateur de cron?

Bonjour,

je cherche a setter un cron selon une répétition choisie par l’utilisateur.

Pour ca j’utilise dans le js :

$('#bt_cronGenerator').off('click').on('click',function(){
  jeedom.getCronSelectModal({},function (result) {
    $('.eqLogicAttr[data-l1key=repeat_action_cron]').value(result.value);
  });
});

ce qui appelle la fonction core getCronSelectModal.

Cette fonction me renvoie un cron au format (du fichier core cron.human.insert.php):

                initial: '* * * * *',
                customValues: {
                    "5 Minutes" : "*/5 * * * *",
                    "10 Minutes" : "*/10 * * * *",
                    "15 Minutes" : "*/15 * * * *",
                    "20 Minutes" : "*/20 * * * *",
                    "30 Minutes" : "*/30 * * * *",

Sauf que dans le crontab, le format correct semble être avec une étoile de plus en fin de schedule.

Si j’utilise direct le format généré (*/5 * * * * par exemple), mon cron s’exécute toutes les minutes.
Si j’ajoute une * (*/5 * * * * *), alors le cron s’exécute correctement toutes les 5 min.

J’ai loupé un truc dans la facon d’imprementer mon setSchedule, ou c’est un bug core ?

(Pour info, dans le code j’ai essayé

$cron->setSchedule($action['repeat_action_cron']);
$cron->setSchedule(checkAndFixCron($action['repeat_action_cron']));

Les 2 set le cron avec le format généré par getCronSelectModal, c’est à dire celui où il semble manquer une *)

Merci d’avance,
AgP

Bonjour,
Le résultat est correct, la 6eme est optionnelle pour la librairie utilisée. Tu peux aussi la mettre.
À savoir que le cron qu’on créé dans un plug-in ne se retrouve de toute façon pas dans le crontab

merci pour ta réponse !

Sauf que si je ne l’ajoute pas, mon cron s’exécute toutes les min et non pas toutes les 5 min…

Tu as un cron custom pour ton plugin dans le moteur de tâche?
je confirme que sur un plugin par exemple j’ai ceci $cron->setSchedule('*/5 * * * *'); et le cron s’exécute toutes les 5 min comme voulu.
Y aurait pas un problème avec les guillements qui ferait qui le / est interprété comme un escape (je dis ca à tout hasard)?

Sinon avec ce type de code, tu peux avoir le helper jeedom pour que l’utilisateur choisisse lui-même

<div class="input-group">
	<input type="text" class="eqLogicAttr form-control" data-l1key="configuration" data-l2key="autorefresh" placeholder="{{Auto-actualisation (cron)}}"/>
	<span class="input-group-btn">
		<a class="btn btn-default cursor jeeHelper" data-helper="cron">
			<i class="fas fa-question-circle"></i>
		</a>
	</span>
</div>

Oui

Bon, j’ai fait du menage dans mon code, j’ai rebooté et vider le cache et effectivement maintenant ça s’exécute bien toutes les 5 min sans avoir besoin de cette * supplémentaire, je comprend pas ce que j’avais mal fait…

Merci, je pense que ca revient au même que la fonction JS que j’ai donné dans mon 1er post et que j’ai piqué dans le plugin Thermostat.

Merci pour ton aide super rapide et efficace en tout cas :wink:

AgP

1 « J'aime »

Oui ça revient sûrement au même sauf que tu n’as pas à gérer le js, c’est fait pour toi.

Ah ok, bon à savoir ! :wink:

Merci !

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