Nécessité de déclencher un script à une date spécifique à partir d'un site Web statique hébergé sur Unix

0

J'ai un site Web statique fonctionnant sur un service d'hébergement Unix où je dois déclencher un événement à une date donnée qui est calculée à partir d'une date (qui change régulièrement) inscrite dans un tableau sur le site. Le déclencheur désactivera une opération d'envoi de courrier électronique. Existe-t-il un moyen de déclencher l'événement à partir d'un script du site ou de la plateforme d'hébergement? Ou dois-je me tourner vers un programme commercial pour le faire? (Si oui, lequel)? Reconnaissant pour vos pensées à ce sujet. À la vôtre, David

DavidG
la source
C’est trop large, pouvez-vous au moins donner un exemple, c’est-à-dire qu’ajoutez-vous à quoi obtenir, et quelle est l’échelle de temps dont nous parlons? "Demain dans 40 semaines", ou plus comme "vendredi prochain"?
hroptatyr le

Réponses:

0

En gros, vos options (à partir de mes propres cas d'utilisation) sont les suivantes:

  1. Utilisez sleep(1)cette option pour les éléments nécessitant une précision d'une seconde ou d'une seconde, générés par votre script et nohup(1)'d.
  2. Utilisez la at(1)commande pour planifier l'exécution avec le démon at (nécessite une exécution atd)

L'option 1 peut utiliser des temps relatifs et fonctionne sur tous les systèmes Unix, à savoir sleep-script.sh:

#!/bin/sh

sleep "$@"
## dostuff
echo "DONE"

puis de votre script:

...
nohup sleep-script.sh 1m 19s &
...

L'option 2 nécessite une exécution atd(et prend en charge les temps absolus), dans votre script, vous mettriez:

...
at 09:45 tomorrow <<EOF
## stuff i need done
echo "DONE"
EOF
...

L'option 2 est plus pratique car vous pouvez utiliser atqet atrmvoir la file d'attente des commandes ou supprimer des travaux spécifiques de la file d'attente, respectivement. Mais il ne prend pas en charge la précision inférieure à la minute avec la syntaxe ci-dessus.

hroptatyr
la source
Pour vous donner des informations un peu plus spécifiques. Je dois déclencher un script qui enverra des courriels. La date d'exécution du script est calculée à partir d'une date (entrée environ toutes les 3 semaines à la fin de l'année) moins 4 jours. Lorsque "date-4" est atteinte, le script doit être déclenché et les courriels envoyés. Mon problème est de savoir comment calculer la "date 4" à partir d'un tableau statique contenant la date sur mon site Web et créer le déclencheur. Ma requête porte sur la façon de calculer "date-4" et, le cas échéant, d'utiliser le résultat pour envoyer les courriels. Ce n'est pas important à quelle heure le "date-4" ils sont envoyés.
DavidG
Salut! Merci beaucoup d'avoir pris le temps de répondre. Les outils de données pourraient-ils fonctionner à partir d'une plate-forme Unix hébergeant mon site Web? En d'autres termes, ai-je la possibilité sur une plate-forme d'hébergement d'accéder à la ligne de commande? La table à laquelle je fais référence est une table qui est en réalité une table HTML d'une page Web dans laquelle une date est entrée pour l'affichage. Ce n'est pas dans une base de données MySQL ou quelque chose comme ça. J'imagine que cela devient compliqué, mais si ce n'est pas le cas, je vous suis très reconnaissant du temps que vous prenez pour m'aider. À la vôtre, David
DavidG
Je ne connais pas votre fournisseur d'hébergement, mais oui, vous aurez besoin d'un accès shell pour installer le paquet. Si vous ne pouvez voir / utiliser que php par exemple, il y aurait aussi une solution php mais je ne suis pas un expert en php. Par intérêt, comment lancez-vous alors le script sur la plate-forme d'hébergement?
hroptatyr
0

Comme j'ai mal compris la question, voici une autre réponse qui traite du calcul de la date réelle:

Si vous pouvez extraire la date pour que les outils de ligne de commande puissent l'utiliser, il existe une pléthore de possibilités, à daddpartir de dateutils par exemple:

$ dadd 2014-01-27 -4
2014-01-23

Ou même via stdin:

$ echo 2014-01-27 | dadd -4
2014-01-23

Si vous entendez table par table SQL, vous pouvez utiliser l'arithmétique de date de votre système de base de données, par exemple dans mysql:

SELECT DATE_ADD(STR_TO_DATE("2014-01-27", "%Y-%m-%d"), INTERVAL -4 DAY);
+------------------------------------------------------------------+
| DATE_ADD(STR_TO_DATE("2014-01-27", "%Y-%m-%d"), INTERVAL -4 DAY) |
+------------------------------------------------------------------+
| 2014-01-23                                                       |
+------------------------------------------------------------------+

qui peut également être exécuté à partir de la ligne de commande pour transmettre la valeur à des outils tels que at.

hroptatyr
la source
0

Encore merci d'avoir pris le temps de répondre. Pour le moment, je ne commence pas le script auquel je fais référence ici. C'est le problème actuel. Un autre script que j'utilise est un simple déclencheur à partir d'un formulaire soumis. Ce n'était pas trop compliqué. Je suppose que je vais devoir continuer à chercher. Tous les meilleurs, David

DavidG
la source