Hur skapar jag ett cron-jobb från LWS-panelen?

Procédure

Vad är ett cron-jobb?

Syftet med ett cron-jobb är att automatiskt köra ett skript, ett kommando eller ett program på bestämda tider.

Med"LWS cron-jobb" kan du schemalägga ett skript på din webbplats så att det körs vid olika tidpunkter. Till exempel en gång i veckan, en gång om dagen, den 8:e i varje månad osv.

Cron är ett mycket användbart verktyg för systemadministratörer för att automatisera olika uppgifter, t.ex. säkerhetskopiering av data, uppdatering av programvara,skicka e-post osv.

En timeout på 240 sekunder tillämpas på dessa uppgifter, vilket innebär att om ditt skript tar mer än 4 minuter att köra kommer det att stängas av automatiskt efter 4 minuter.

Hur skapar jag ett cron-jobb?

Få tillgång till verktyget Cron Task

Först måste du logga in på ditt LWS-konto och komma åt det delade webbhotellet som du vill skapa ett cron-jobb för.

När du är inne i hanteringen av din tjänst, leta efter blocket"Databas & PHP" och klicka på"Cron-uppgifter".

Hur skapar jag ett cron-jobb från LWS-panelen?

Konfigurera frekvensen för cron-jobbet

Det första du ska konfigurera för ditt cron-jobb är dess periodicitet.

På den här nivån erbjuder LWS förinställningar i sitt verktyg så att du kan konfigurera detta med 1 klick.

För att göra detta använder du helt enkelt den första listan högst upp i formuläret och väljer en av de föreslagna parametrarna. Då fylls fälten automatiskt i så att de stämmer överens med den periodicitet som anges i den lista du har valt.

Hur skapar jag ett cron-jobb från LWS-panelen?

Om den periodicitet du vill ställa in inte föreslås i den första listan, oroa dig inte, vi kan konfigurera varje element.

För varje element (minuter, timmar, dagar osv.) kan du antingen ange värdena manuellt eller använda listfältet till höger om varje fält.

Om jag t.ex. vill att min uppgift ska starta varje dag kl. 12.27 behöver jag bara välja siffran 27 i listan till höger om minutfältet och välja 12.00 i listan till höger om timfältet.

Tips / råd

  • Förutom i mycket speciella fall rekommenderar vi inte att du ställer in ett cron-jobb som ska köras varje minut för att inte mätta servern och därmed minska prestandan för din tjänst.
  • Föredra uppgifter som körs på natten och vid specifika tidpunkter (t.ex. kl. 03.47 ) för att undvika att dina uppgifter körs samtidigt som eventuella automatiska uppgifter, vilket vissa CMS eller verktyg som används på din webbplats kan göra.

Konfigurera kommandofältet

Det finns tre sätt att anropa ditt skript via Cron Task-verktyget:

  • PHP-anrop
  • Anrop wget
  • cURL-anrop

Skillnaden mellan dessa tre alternativ ligger främst i hur de exekverar ditt skript.

Ett Wget- eller Curl-anrop använder HTTP-protokollet, vilket innebär att det kommer att vara föremål för Apache-konfigurationer och begränsningar, till exempel timeout, som kan vara relativt kort.

PHP-anropet, å andra sidan, kommer att vara fritt från de begränsningar som vi diskuterade med de andra två metoderna. Tänk på PHP-anropet som att det går genom en SSH-anslutning.

Du kanske därför undrar vilken metod du ska välja för att konfigurera din Cron-uppgift. Vårt svar är att det inte finns några egentliga skillnader för grundläggande skript som körs snabbt. Men om din CRON-uppgift är ganska stor, med många åtgärder som utförs och därför en något längre exekveringstid, kommer den lämpligaste metoden att vara ettPHP-anrop. Till skillnad från Curl eller Wget kommer timeouten att vara längre (4 min).

Vi kommer att titta på hur man ställer in ett cron-jobb för vart och ett av de anrop som nämns ovan. Vi tar som exempel en enkel webbplats som anropar ett rotskript.

cURL-anrop

När vi gör ett curl-anrop med HTTP-protokollet anropar vi helt enkelt URL:en till vår fil enligt följande

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

Vi kan också behöva skicka parametrar till vårt skript. För att göra detta lägger du helt enkelt till dem enligt följande:

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

Detta gör att vi kan hämta dessa parametervärden i koden för vårt POST-skript.

Alternativ Roll
-s Tyst läge (ingen förloppsindikator).
-H "Cache-kontroll: no-cache" Tvinga fram no-cache på serversidan.
> /dev/null Omdirigerar utdata för att inte spara något.

Wget-anrop

Under ett Wget-anrop, som också använder HTTP-protokollet, precis som med cURL-anropet, kommer vi också att anropa URL:en för vårt skript. Detta kommer att ge :

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

Om vi behöver skicka parametrar till skriptet har vi med Wget inget annat val än att skicka parametrarna i GET. Så här skriver du kommandot :

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

I skriptet kan vi hämta dessa två parametrar i GET.

Alternativ Roll
--no-cache Undviker användning av mellanliggande cacher (användbart med vissa proxyer).
--output-dokument=/dev/null Lagrar ingenting lokalt.
--header="Cache-kontroll: no-cache" Skickar en HTTP-header för att undvika cachelagring på serversidan.

PHP-anrop

I fallet med en enkel webbplats, låt oss föreställa oss att filen som innehåller mitt skript heter cron.php

Allt du behöver göra är att ange följande kommando i Cron Task-verktyget:

php /htdocs/cron.php

Här kommer den PHP-version som används för att köra ditt skript att vara 8.0 som standard.

Om du vill använda en specifik version av PHP ändrar du helt enkelt anropet något. Om du till exempel vill använda version 7.2 för att köra skriptet, kallas kommandot så här :

php72 /htdocs/cron.php

Vi kan också behöva skicka ett argument som sedan kommer att användas i vårt skript.

Låt oss till exempel föreställa oss att syftet med vårt skript är att skicka ett e-postmeddelande baserat på ett kriterium som vi definierar, till exempel födelsedagen. Vi kanske därför vill skicka detta kriterium i anropet. Så här gör du det via kommandoraden :

php72 /htdocs/cron.php type=anniversary

Särskilda fall

Det finns också specialfall beroende på vad du använder för din webbplats.

Till exempel, när det gäller en webbplats som skapats med Cakephp-ramverket, kommer CRON-uppgiftskonfigurationen att vara lite annorlunda eftersom den kommer att göras via ett SHELL-kommando som anropas av ramsystemet.

Låt oss föreställa oss att vi har en e-handelswebbplats som skapats med hjälp av Cakephp-ramverket och att vi vill ställa in ett skript som skickar ett e-postmeddelande till den bästa kunden och erbjuder dem en kampanjkod.

Vi kommer att skapa ett Cake-kommando som vi kallar SendCP, som kommer att innehålla skriptet som hanterar det vi vill göra. Så här konfigurerar vi Cron-uppgiften :

php72 /htdocs/Konsol/cake.php SendCP

Det skulle ta lång tid att ge ett exempel på varje fall, men med det som har getts här har du redan en bra grund för att använda Cron task-verktyget.

Med hjälp av de olika exemplen vet vi nu hur vi ska skriva vårt kommando för att :

  • helt enkelt köra vårt skript med de valda intervallen
  • köra vårt skript genom att lägga till parametrar och med de valda intervallerna

Skapa en loggfil

Vi ska nu titta på hur vi skapar en loggfil så att vi kan se vad som hände under skriptet som anropades av Cron.

För att göra detta använder vi exemplet nedan för vårt CRON-skript.

Exempel på en PHP-ekofunktion för loggfilen

<?php /* Så du behöver inte oroa dig för cachelagring */ 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"); /* Skriv det aktuella datumet till filen, till exempel: 2023/01/19 12:24:01 */ /* PHP_EOL låter dig hoppa över en rad i filen */ echo date('Y/m/d h:i:s').PHP_EOL; /* Skriv meningen nedan i loggfilen */ echo 'Recording my Cron'.PHP_EOL.PHP_EOL; ?>

Rendering av loggfilen efter att skriptet startats via Cron Job

2023/01/19 02:57:01 Inspelning av min Cron 2023/01/19 03:57:01 Inspelning av min Cron 2023/01/19 04:57:01 Inspelning av min Cron 2023/01/19 05:57:01 Inspelning av min Cron 2023/01/19 06:57:01 Inspelning av min Cron 2023/01/19 07:57:01 Inspelning av min Cron 2023/01/19 08:57:01 Inspelning av min Cron

Vad du lägger in i loggfilen beror på dig och vad du vill spåra i ditt skript. Det kan till exempel vara en lista över åtgärder med resultatet för var och en av dem.

Exempel på ett cURL-anrop med retur i en loggfil

För ett cURL-anrop är det här kommandot som ska anges i fältet "Command":

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

I det här exemplet kommer writebacks (echo PHP) att göras till filen cron_curl.log i mappen logs. Om filen eller mappen inte finns kommer den att skapas automatiskt.

Alternativ Roll
-s Tyst läge (ingen förloppsindikator).
-H "Cache-kontroll: no-cache" Tvinga fram no-cache på serversidan.
> /htdocs/loggar/cron_curl.log omdirigerar standardutdata (stdout) till cron_curl.log.
2>&1 omdirigerar även fel (stderr) till samma fil.

Exempel på wget-anrop med retur till en loggfil

Här är kommandot som ska användas för ett Wget-anrop:

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

I det här exemplet skickas skrivfeedback (echo PHP) till filen cron_wget.log i mappen logs. Om filen eller mappen inte finns kommer den att skapas automatiskt.

Alternativ Roll
--no-cache Undviker användning av mellanliggande cacher (användbart med vissa proxyer).
--header="Cache-kontroll: no-cache" Skickar en HTTP-header för att undvika cachelagring på serversidan.
--post-data="..." lägger till en anpassad HTTP-header.
> /htdocs/logs/cron_wget.log omdirigerar standardutdata (stdout) till cron_wget.log.
2>&1 omdirigerar också fel (stderr) till samma fil.

Exempel på ett PHP-anrop med retur till en loggfil

För ett PHO-anrop, här är kommandot som ska användas:

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

I det här exemplet skickas skrivfeedback (echo PHP) till filen cron_php.log i mappen loggar. Om filen eller mappen inte finns kommer den att skapas automatiskt.

Hur hanterar jag mina cron-uppgifter?

Visa mina skapade cron-uppgifter

När du har skapat dina cron-uppgifter kan du hitta dem direkt i listan som visas under tilläggsformuläret.

Hur skapar jag ett cron-jobb från LWS-panelen?

Här hittar du en lista med det inspelade kommandot, periodiciteten och möjligheten att ta bort ett cron-jobb eller pausa det.

Hur skapar jag ett cron-jobb från LWS-panelen?

Hur ändrar jag ett cron-jobb?

Om du har ett LWS Starter-paket eller högre kan du ändra cron-jobbet för ditt paket via webbterminalen som är tillgänglig från din paketadministration.

För att göra detta, anslut till ditt webbhotell och gå till det delade webbhotellet som du vill ändra ett cron-jobb för.

Klicka på"Terminal" i avsnittet "Programvara".

Hur skapar jag ett cron-jobb från LWS-panelen?

Öppna cron-filen med hjälp av följande kommando:

crontab -e

Hur skapar jag ett cron-jobb från LWS-panelen?

När du är inne i cron-filen bläddrar du i filen efter den uppgift du vill ändra. Varje rad i filen representerar en separat uppgift. Ändra sedan cron-jobbet och se till att syntaxen förblir korrekt. Spara det sedan med hjälp av kortkommandot [CTRL] +X och sedan"Y". Tryck sedan på [Enter].

Du kan sedan kontrollera om cron-jobbet har ändrats korrekt genom att använda följande kommando:

crontab -l

Hur skapar jag ett cron-jobb från LWS-panelen?

Använda Cron-uppgifter med Cloudflare DNS

Varför fungerar inte mina crons med CloudFlare?

Du har länkat din domän till CloudFlare med hjälp av den senares DNS och vill konfigurera ett cron-jobb från ditt kundområde i det tillhörande avsnittet, men jobbet körs bara en gång utan att upprepa sig med det tidsintervall du ville ha. Detta problem är känt, CloudFlare blockerar utförandet av crons som skickas från våra tjänster. Här är en lösning för att lösa detta problem.

Kör ett cron-jobb med hjälp av CloudFlare

De cron-uppgifter som konfigureras från kundområdet fungerar inte om du använder CloudFlare DNS. Följ denna procedur för att lösa detta problem:

  1. Skapa en underdomän (till exempel: cron.domain.ext) från ditt kundutrymme genom att följa denna dokumentation
  2. Placera filen som ska köras av ditt cron-jobb i mappen som bär namnet på din underdomän på ditt värds FTP-utrymme.
  3. Skapa ditt cron-jobb från kundutrymmet genom att följa instruktionerna ovan i den här dokumentationen.
  4. Anslut till ditt CloudFlare-konto som är kopplat till ditt domännamn.

I avsnittet "DNS" lägger du till en CNAME-post som visas i följande exempel:

Hur skapar jag ett cron-jobb från LWS-panelen?

Ersätt"cron" med namnet på din underdomän och "domain.ext" med ditt domännamn.

Se till att molnet är grått och inte orange. Detta talar om för CloudFlare att du inte vill använda deras tjänster för den här subdomänen.

Du kan sedan klicka på knappen"Add Record".

Slutsats

Du vet nu hur du ska göra för att : - Förstå syftet med och driften av ett cron-jobb 🤖

  • Konfigurera och köra skript automatiskt med hjälp av LWS cron-uppgift ⏱️
  • Få tillgång till Cron Task-verktyget och konfigurera periodicitet
  • Använda de olika anropsmetoderna (PHP, wget, cURL) för dina skript 🌐
  • Använda loggfiler för att övervaka dina cron-uppgifter 📝
  • Hantera, ändra och visa dina skapade cron-uppgifter 🛠️
  • Använda cron-uppgifter med Cloudflare DNS för att komma runt runtime-problem 🛡️

Vi hoppas att den här artikeln har gett dig alla nycklar till att bemästra cron-uppgifter och automatisera dina systemuppgifter på ett effektivt sätt.

Om du har några frågor, feedback eller tips att dela, tveka inte att lämna dem som en kommentar. Tack för att du läste och vi ses snart för mer praktiska råd! 🙏💬

Betygsätt denna artikel :

3/5 | 1 Yttrande

Den här artikeln var användbar för dig ?

Article utileJa

Article non utileNej

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)

Liknande artiklar

0mn läsning

Multi-domain - Flera domäner på samma webbhotell

1mn läsning

Är det möjligt att ta bort RSpamD anti-spam-funktionen på delad hosting?

0mn läsning

Hur kan jag visa e-postmeddelanden som skickats med PHP:s e-postfunktion och blockerats av SPAMASSASSIN?


Ställ en fråga till AWS-teamet och dess community