Betygsätt denna artikel :
3/5 | 1 Yttrande
Den här artikeln var användbar för dig ?
Ja
Nej
Vous avez noté 0 étoile(s)
Sommaire
Procédure
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.
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".

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.

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.
Det finns tre sätt att anropa ditt skript via Cron Task-verktyget:
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¶m2=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¶m2=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 :
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.
När du har skapat dina cron-uppgifter kan du hitta dem direkt i listan som visas under tilläggsformuläret.

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

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".

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

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

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.
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:
I avsnittet "DNS" lägger du till en CNAME-post som visas i följande exempel:

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".
Du vet nu hur du ska göra för att : - Förstå syftet med och driften av ett cron-jobb 🤖
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 ?
Ja
Nej
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?