Les sites Web peuvent exécuter des tâches planifiées avec Cron

horloge

Nous avons un certain nombre de systèmes de surveillance redondants au travail qui exécutent régulièrement des processus. Certains courent toutes les minutes, d'autres une fois par nuit selon ce qu'ils font. Par exemple, nous pouvons exécuter un script qui exporte tous les clients qui n'ont pas effectué d'achat dans les 30 jours pour leur envoyer un coupon.

Plutôt que d'essayer de garder une trace de tout cela à la main, il est beaucoup plus facile de créer des tâches qui sont automatiquement planifiées et exécutées. Sur les systèmes Unix, ceci est accompli avec Cron. Pour vous qui savez ce que vous faites, n'hésitez pas à m'informer, ainsi que les lecteurs, si je lance de la désinformation.

C'est malheureux, mais le développeur Web typique ne connaît pas du tout Cron. Même s'ils le sont, les sociétés d'hébergement Web ne fournissent souvent pas d'accès à Cron ni ne le supportent. Mon hôte est l'un de ces derniers - ils vous permettent de l'utiliser, mais ils ne le prennent pas en charge.

Qu'est-ce que Cron?

Cron est nommé pour le mot grec Chronos, qui signifie Covid-XNUMX. Cron s'exécute en boucle continue pour exécuter des tâches accumulées par Crontab (peut-être nommé pour languetteulator. Ces tâches sont généralement appelées Cronjobs et peuvent référencer des scripts sur votre site.

Explication du diagramme Cron

Comment configurer le Crontab

Faire fonctionner Cron peut être un défi, alors voici ce que j'ai appris et comment je l'ai fait Si sucer:

  1. J'ai configuré mon script pour vérifier Twitter API pour voir si quelqu'un avait répondu à @ifsuck. J'ai comparé ces messages aux messages que j'avais déjà enregistrés sur le site Web, en saisissant de nouveaux.
  2. Une fois que le script fonctionnait, j'ai activé les autorisations pour que l'utilisateur exécute le script (744) et ajouté la référence de script à mon fichier Cronjob - plus à ce sujet plus tard.
  3. J'ai ensuite dû me connecter à mon site Web via SSH. Sur un Mac, cela a pris l'ouverture du Terminal et la saisie Nom d'utilisateur SSH@domaine.com où nom d'utilisateur était le nom d'utilisateur que je souhaitais utiliser et le domaine était le site Web. J'ai ensuite été invité et donné le mot de passe.
  4. J'ai ensuite tenté d'exécuter le script directement à partir de l'invite de commande en tapant le nom de fichier et le chemin relatif sur le serveur: /var/www/html/monscript.php
  5. Une fois que je l'ai fait fonctionner correctement, j'ai ajouté le code Unix nécessaire dans la première ligne du fichier: #! / usr / bin / php -q . Je crois que cela indique simplement à Unix d'utiliser PHP pour exécuter le script.
  6. Sur la ligne de commande du terminal, j'ai tapé crontab (d'autres peuvent avoir besoin de taper crontab -e) et appuyez sur Entrée… et c'était tout ce qu'il fallait!

Syntaxe de votre fichier Cronjob

En ce qui concerne le n ° 2 ci-dessus, Cron utilise un schéma ingénieux pour déterminer quand vos scripts seront exécutés. En fait, vous pouvez copier et coller ceci dans votre Cronfile (sur mon hôte, il est situé dans / var / spool / cron / avec le nom de fichier identique à mon nom d'utilisateur).

# + —————- minute (0 - 59)
# | + ————- heure (0 - 23)
# | | + ———- jour du mois (1 - 31)
# | | | + ——- mois (1 - 12)
# | | | | + —- jour de la semaine (0 - 6) (dimanche = 0 ou 7)
# | | | | |
* * * * * /var/www/html/monscript.php

Ce qui précède exécutera mon script toutes les minutes. Si je voulais qu'il ne fonctionne qu'une fois par heure, je mettrais simplement combien de minutes après l'heure je souhaite qu'il fonctionne, donc s'il était à 30 minutes:

30 * * * * /var/www/html/monscript.php

Assurez-vous également de définir les autorisations sur ce fichier comme exécutable! J'ai trouvé que la syntaxe, les autorisations et l'exécution de crontab à partir de la fenêtre Terminal étaient les facteurs les plus importants. Chaque fois que je réenregistre le fichier, mes autorisations doivent également être réinitialisées!

MISE À JOUR: Si vous souhaitez vous assurer que les travaux sont en cours d'exécution, un moyen simple consiste à mettre à jour un champ de base de données avec la dernière exécution du script. Si c'est moins fréquent, vous pouvez simplement écrire un e-mail qui vous est envoyé.

Ressources Cron supplémentaires:

Combien de travaux pouvez-vous automatiser en utilisant Cron?

8 Commentaires

  1. 1

    Well covered article on setting up a cron, for someone new to crojobs, the most difficult part in setting up a cron is to figure out the cronjob execution interval, and it is quite commong to get a wrong interval at first try. If your cronjobs are time sensitive, it is good to include some codes in the script to echo out status so that you are kept inform of the job execution status.

  2. 2

    Salut Doug,

    A couple of things to consider when working with cron jobs.

    First, after a few dozen, you’ll wish you had a UI, a database and english-looking syntax 😉

    Second, cron will fire the job at the specified time, regardless of whether the previous invocation of the job completed. So running a job once a minute that takes 2 minutes will quickly lead to lots of the same job running.

    Next, there is next to no error reporting when something goes wrong, so you’ll need to add your own error reporting.

    I’ve addressed these in a couple of ways:
    – have the application triggered via cron look in a database to determine what needs to be run. Run it once a minute or hour depending on what you want
    – have each script create a ‘lock’ file in /tmp and if it exists, don’t start again, this prevents duplicate jobs if you don’t want them
    – if the script finds the lock file older than 1 hour (or whatever suggests you died) send an email alert
    – have the script send email on failure of the job so you know something went wrong
    – look at frameworks like Flux or commercial schedulers when your needs get beyond a few scripts

    chris

  3. 4

    I’ll also add that on most Linux/Unix systems, “crontab -e” is what you use to edit your crontab. I think your host (Jumpline) is using a modified version for security reasons.

  4. 5

    I still remember the first day I met Cronnie. I had heard things about her, that she was dependable, always on time, but sometimes a bit confusing about her intentions.

    I found this to be true as she was a complete mystery to me at first. After asking around about her, I caught on fairly quickly as to how she liked to operate. Now, I can’t imagine a day going by without her in my life. She makes the mundane exciting, and lifts many burdens off my shoulders.

    In all seriousness, I feel like I’ve only scratched the surface with what I can automate with cron jobs. They truly are a developers best friend. If you are using someone like CPanel to manage your server, it provides a much more friendly interface to create crons. Complete with drop down menus for minute, hour, day, month, etc. that builds the cron line for you.

  5. 7

    I definitely see this is something every marketer should be using…Is there anyone who can provide this service because it sounds a bit too “techy”?

Que pensez-vous?

Ce site utilise Akismet pour réduire les spams. Découvrez comment sont traitées les données de vos commentaires..