Hoe maak ik een crontaak aan vanuit het LWS-paneel?

Procédure

Wat is een crontaak?

Het doel van een cron job is het automatisch uitvoeren van een script, een commando of een programma op vaste tijden.

Met"LWS cron job" kun je een script op je site zo plannen dat het op verschillende tijden wordt uitgevoerd. Bijvoorbeeld eenmaal per week, eenmaal per dag, op de 8e van elke maand, enz.

Cron is een heel handig hulpmiddel voor systeembeheerders om verschillende taken te automatiseren, zoals het maken van back-ups van gegevens, het bijwerken van software,het verzenden van e-mails, enz.

Er wordt een time-out van 240s toegepast op deze taken, wat betekent dat als je script er meer dan 4 minuten over doet om uit te voeren, het na 4 minuten automatisch wordt afgesloten.

Hoe maak ik een crontaak aan?

Toegang tot de Crontaak-tool

Eerst moet je inloggen op je LWS account en toegang krijgen tot de shared hosting waarvoor je een cron job wilt aanmaken.

Eenmaal in het beheer van je dienst, zoek je naar het blok"Database & PHP" en klik je op"Cron taken".

Hoe maak ik een crontaak aan vanuit het LWS-paneel?

De frequentie van de crontaak configureren

Het eerste dat je moet configureren voor je cron job is de periodiciteit.

Op dit niveau biedt LWS voorinstellingen in zijn tool zodat je dit met 1 klik kunt configureren.

Gebruik hiervoor de eerste lijst bovenaan het formulier en selecteer een van de voorgestelde parameters. Hierdoor worden de velden automatisch ingevuld zodat ze overeenkomen met de periodiciteit die is aangegeven in de lijst die je hebt geselecteerd.

Hoe maak ik een crontaak aan vanuit het LWS-paneel?

Als de periodiciteit die je wilt instellen niet wordt voorgesteld in deze eerste lijst, maak je dan geen zorgen, we kunnen elk element configureren.

Voor elk element (minuten, uren, dagen, enz.) kun je de waarden handmatig invoeren of het lijstveld rechts van elk veld gebruiken.

Dus als ik bijvoorbeeld wil dat mijn taak elke dag om 12:27 begint, hoef ik alleen maar het getal 27 te selecteren in de lijst bij het minutenveld en 12:00 pm (middag) te selecteren in de lijst bij het urenveld.

Tips / Advies

  • Behalve in zeer speciale gevallen raden we af om een crontaak in te stellen die elke minuut moet worden uitgevoerd om de server niet te verzadigen en daardoor de prestaties van je service te verminderen.
  • Geef de voorkeur aan taken die 's nachts en op specifieke tijden (zoals 3.47 uur ) worden uitgevoerd om te voorkomen dat uw taken op hetzelfde moment worden uitgevoerd als mogelijke automatische taken, zoals sommige CMS'en of tools die op uw site worden gebruikt kunnen doen.

Het opdrachtveld configureren

Er zijn drie manieren om uw script aan te roepen via de Cron Task tool:

  • PHP-oproep
  • Wget aanroepen
  • cURL-oproep

Het verschil tussen deze drie opties zit voornamelijk in de manier waarop ze je script uitvoeren.

Een Wget of Curl aanroep gebruikt het HTTP protocol, wat betekent dat het onderworpen is aan Apache configuraties en beperkingen zoals de timeout, die relatief kort kan zijn.

DePHP-aanroep daarentegen is vrij van de beperkingen die we bij de andere twee methoden hebben besproken. Zie de PHP-aanroep als een SSH-verbinding.

Je kunt je dus afvragen welke methode je moet kiezen om je Cron-taak in te stellen. Ons antwoord is dat er geen echte verschillen zijn voor basisscripts die snel worden uitgevoerd. Als je CRON taak echter vrij groot is, met veel uitgevoerde acties en dus een iets langere uitvoeringstijd, dan zal de meest geschikte methode eenPHP aanroep zijn. In tegenstelling tot Curl of Wget zal de time-out langer zijn (4 min).

We gaan kijken hoe we een cron job kunnen instellen voor elk van de hierboven genoemde aanroepen. We nemen als voorbeeld een eenvoudige site die een root script aanroept.

cURL aanroep

Bij het maken van een curl-oproep met behulp van het HTTP-protocol, roepen we gewoon de URL naar ons bestand als volgt aan

curl -s -H "Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php" > /dev/null

Mogelijk moeten we ook parameters naar ons script sturen. Om dit te doen, voeg je ze gewoon als volgt toe:

curl -d "param1=waarde1&param2=waarde2" -s -H "Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php" > /dev/null

Hierdoor kunnen we deze parameterwaarden ophalen in de code van ons POST-script.

Optie Rol
-s Stille modus (geen voortgangsbalk).
-H "Cache-Control: no-cache". Forceer server-side no-cache.
> /dev/null Leidt uitvoer om om niets op te slaan.

Wget-aanroep

Tijdens een Wget aanroep, die ook het HTTP protocol gebruikt, zoals bij de cURL aanroep, zullen we ook de URL van ons script aanroepen. Dit geeft :

wget --no-cache --output-document=/dev/null --header="Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php"

Als we parameters moeten doorgeven aan het script, hebben we met Wget geen andere keuze dan de parameters in GET door te geven. Zo schrijf je het commando :

wget --no-cache --output-document=/dev/null --header="Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php?param1=value1&param2=value2"

In het script kunnen we deze twee parameters ophalen in GET.

Optie Rol
--geen-cache Vermijdt het gebruik van tussenliggende caches (handig met bepaalde proxy's).
--output-document=/dev/null Slaat niets lokaal op.
--header="Cache-Control: no-cache". Stuurt een HTTP-header om caching aan de serverzijde te vermijden.

PHP-aanroep

In het geval van een eenvoudige site, stellen we ons voor dat het bestand met mijn script cron.php heet.

Het enige wat je hoeft te doen is het volgende commando in te voeren in de Cron Task tool:

php /htdocs/cron.php

Hier zal de PHP-versie die wordt gebruikt om je script uit te voeren standaard 8.0 zijn.

Als je een specifieke versie van PHP wilt gebruiken, pas je gewoon de aanroep iets aan. Als u bijvoorbeeld versie 7.2 wilt gebruiken om het script uit te voeren, is dit het commando :

php72 /htdocs/cron.php

Het kan ook nodig zijn om een argument door te geven dat in ons script wordt gebruikt.

Laten we ons bijvoorbeeld voorstellen dat het doel van ons script is om een e-mail te versturen op basis van een criterium dat we definiëren, zoals de verjaardag. Daarom willen we misschien dit criterium doorgeven in de aanroep. Dit is hoe je dat doet via de opdrachtregel :

php72 /htdocs/cron.php type=verjaardag

Speciale gevallen

Er zijn ook speciale gevallen, afhankelijk van wat u voor uw site gebruikt.

Bijvoorbeeld, in het geval van een site die is gemaakt met het Cakephp framework, zal de configuratie van de CRON taak een beetje anders zijn omdat het zal worden gedaan via een SHELL commando aangeroepen door het framework systeem.

Stel dat we een e-commerce site hebben die is gemaakt met het Cakephp framework en we willen een script instellen dat een e-mail stuurt naar de beste klant met een promotiecode.

We gaan een Cake-commando maken dat we SendCP noemen en dat het script zal bevatten dat beheert wat we willen doen. Hier is hoe we de Cron-taak configureren:

php72 /htdocs/Console/cake.php SendCP

Het zou lang duren om van elk geval een voorbeeld te geven, maar met wat hier is gegeven, heb je al een goede basis voor het gebruik van de Cron task tool.

Met behulp van de verschillende voorbeelden weten we nu hoe we ons commando moeten schrijven om :

  • ons script simpelweg uit te voeren op de gekozen intervallen
  • ons script uit te voeren door parameters toe te voegen en met de gekozen intervallen

Een logbestand maken

We gaan nu kijken hoe we een logbestand kunnen maken zodat we kunnen zien wat er is gebeurd tijdens het script dat is aangeroepen door Cron.

Hiervoor gebruiken we het onderstaande voorbeeld voor ons CRON script.

Voorbeeld van een PHP echofunctie voor het logbestand

<?php /* Dus je hoeft je geen zorgen te maken over caching */ header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); /* Schrijf de huidige datum naar het bestand, bijvoorbeeld: 2023/01/19 12:24:01 */ /* Met PHP_EOL kun je een regel in het bestand overslaan */ echo date('J/m/d h:i:s').PHP_EOL; /* Schrijf de onderstaande zin in het logbestand */ echo 'Opname van mijn Cron'.PHP_EOL.PHP_EOL; ?>

Weergave van het logbestand na het starten van het script via Cron Job

2023/01/19 02:57:01 Opname van mijn Cron 2023/01/19 03:57:01 Opname van mijn Cron 2023/01/19 04:57:01 Opname van mijn Cron 2023/01/19 05:57:01 Opname van mijn Cron 2023/01/19 06:57:01 Opname van mijn Cron 2023/01/19 07:57:01 Opname van mijn Cron 2023/01/19 08:57:01 Opname van mijn Cron

Wat je in je logbestand zet, hangt dus af van jezelf en van wat je in je script wilt bijhouden. Het zou bijvoorbeeld een lijst van acties kunnen zijn met het resultaat van elke actie.

Voorbeeld van een cURL aanroep met terugkeer in een logbestand

Voor een cURL aanroep is hier het commando om in te voeren in het "Command" veld:

curl -s -H "Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php" > /htdocs/logs/cron_curl.log 2>&1

In dit voorbeeld worden er writebacks (echo PHP) gemaakt naar het cron_curl.log bestand in de logs map. Als het bestand of de map niet bestaat, wordt deze automatisch aangemaakt.

Optie Rol
-s Stille modus (geen voortgangsbalk).
-H "Cache-Control: no-cache". Forceer server-side no-cache.
> /htdocs/logs/cron_curl.log Leidt standaard uitvoer (stdout) om naar cron_curl.log.
2>&1 leidt ook fouten (stderr) om naar hetzelfde bestand.

Voorbeeld wget-aanroep met terugkeer naar een logbestand

Voor een Wget-aanroep gebruik je het volgende commando:

wget -O - -q --no-cache --header="Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php" > /htdocs/logs/cron_wget.log 2>&1

In dit voorbeeld wordt schrijffeedback (echo PHP) naar het cron_wget.log bestand in de logs map gestuurd. Als het bestand of de map niet bestaat, wordt het automatisch aangemaakt.

Optie Rol
--Geen cache Vermijdt het gebruik van tussenliggende caches (nuttig met sommige proxies).
--header="Cache-Control: no-cache" Stuurt een HTTP-header om server-side caching te vermijden.
--post-data="..." voegt een aangepaste HTTP-header toe.
> /htdocs/logs/cron_wget.log leidt standaard uitvoer (stdout) om naar cron_wget.log.
2>&1 leidt ook fouten (stderr) om naar hetzelfde bestand.

Voorbeeld van een PHP aanroep met terugkeer naar een logbestand

Voor een PHO oproep is hier het commando dat gebruikt moet worden:

php72 /htdocs/cron.php >> /htdocs/logs/cron_php.log

In dit voorbeeld wordt schrijffeedback (echo PHP) naar het bestand cron_php.log in de map logs gestuurd. Als het bestand of de map niet bestaat, wordt het automatisch aangemaakt.

Hoe beheer ik mijn cron-taken?

Mijn aangemaakte cron-taken bekijken

Zodra je je cron-taken hebt aangemaakt, kun je ze direct terugvinden in de lijst die onder het toevoegformulier verschijnt.

Hoe maak ik een crontaak aan vanuit het LWS-paneel?

Hier vind je een lijst met de opgenomen opdracht, de periodiciteit en de optie om een crontaak te verwijderen of te pauzeren.

Hoe maak ik een crontaak aan vanuit het LWS-paneel?

Hoe wijzig ik een cron job?

Als je een LWS Starter-pakket of hoger hebt, kun je de cron job voor je pakket wijzigen via de Web Terminal die toegankelijk is vanuit je pakketbeheer.

Om dit te doen, maakt u verbinding met uw hosting en gaat u naar de shared hosting waarvoor u een cron job wilt wijzigen.

Klik op"Terminal" in de sectie "Software".

Hoe maak ik een crontaak aan vanuit het LWS-paneel?

Open het cron-bestand met het volgende commando:

crontab -e

Hoe maak ik een crontaak aan vanuit het LWS-paneel?

Eenmaal in het cron-bestand, blader je door het bestand voor de taak die je wilt wijzigen. Elke regel in het bestand vertegenwoordigt een aparte taak. Wijzig vervolgens de crontaak en zorg ervoor dat de syntaxis correct blijft. Sla de taak vervolgens op met de sneltoets [CTRL] +X en vervolgens"Y". Druk vervolgens op [Enter].

Je kunt vervolgens controleren of de crontaak correct is aangepast met het volgende commando:

crontab -l

Hoe maak ik een crontaak aan vanuit het LWS-paneel?

Cron-taken gebruiken met Cloudflare DNS

Waarom werken mijn crons niet met CloudFlare?

U hebt uw domein aan CloudFlare gekoppeld met behulp van de DNS van laatstgenoemde en u wilt een crontaak configureren vanuit uw klantengedeelte in de bijbehorende sectie, maar de taak wordt slechts één keer uitgevoerd zonder zichzelf te herhalen op het door u gewenste tijdsinterval. Dit probleem is bekend, CloudFlare blokkeert de uitvoering van crons die vanuit onze services worden verzonden. Om dit probleem op te lossen, is hier een workaround.

Een crontaak uitvoeren met CloudFlare

De cron-taken die zijn geconfigureerd vanuit het klantengedeelte werken niet als u CloudFlare DNS gebruikt. Volg deze procedure om dit probleem op te lossen:

  1. Creëer een subdomein (bijvoorbeeld: cron.domain.ext) van uw klantruimte door deze documentatie te volgen
  2. Plaats het bestand dat moet worden uitgevoerd door uw cron job in de map met de naam van uw subdomein op de FTP-ruimte van uw hosting.
  3. Maak uw cron job aan vanuit de klantenruimte door de instructies hierboven in deze documentatie te volgen.
  4. Maak verbinding met uw CloudFlare account gekoppeld aan uw domeinnaam.

Voeg in de sectie "DNS" een CNAME-record toe zoals in het volgende voorbeeld:

Hoe maak ik een crontaak aan vanuit het LWS-paneel?

Vervang"cron" door de naam van uw subdomein en"domain.ext" door uw domeinnaam.

Zorg ervoor dat de wolk grijs is en niet oranje. Dit vertelt CloudFlare dat u haar diensten niet wilt gebruiken voor dit subdomein.

U kunt vervolgens op de knop"Record toevoegen" klikken.

Conclusie

U weet nu hoe u : - Het doel en de werking van een crontaak begrijpt 🤖

  • Scripts configureren en automatisch uitvoeren met LWS crontaak ⏱️
  • De Crontaaktool openen en de periodiciteit configureren ✅
  • De verschillende aanroepmethoden (PHP, wget, cURL) gebruiken voor uw scripts 🌐
  • Logbestanden gebruiken om uw cron-taken te controleren 📝
  • Uw aangemaakte cron-taken beheren, wijzigen en bekijken 🛠️
  • Cron-taken gebruiken met Cloudflare DNS om runtime-problemen te omzeilen 🛡️

We hopen dat dit artikel u alle sleutels heeft gegeven om cron-taken te beheersen en uw systeemtaken efficiënt te automatiseren.

Als je vragen, feedback of tips hebt om te delen, aarzel dan niet om ze als commentaar achter te laten. Bedankt voor het lezen en tot snel voor meer praktisch advies! 🙏💬

Beoordeel dit artikel :

3/5 | 1 mening

Dit artikel was nuttig voor jou ?

Article utileJa

Article non utileGeen

MerciMerci ! N'hésitez pas à poser des questions sur nos documentations si vous souhaitez plus d'informations et nous aider à les améliorer.


Vous avez noté 0 étoile(s)

Vergelijkbare artikelen

0mn lezen

Multidomein - Meerdere domeinen op dezelfde webhostingservice plaatsen

1mn lezen

Is het mogelijk om de RSpamD anti-spam functie te verwijderen op shared hosting?

0mn lezen

Hoe kan ik e-mails bekijken die zijn verzonden met de PHP mailfunctie en die zijn geblokkeerd door SPAMASSIN?


Stel een vraag aan het LWS-team en de gemeenschap