Avatar billede anderseiler Nybegynder
27. juni 2007 - 10:20 Der er 9 kommentarer og
1 løsning

Automatisk execute php script

Hej

Jeg har et script i min fil cleanup.php, som skal køres hver dag til midnat. Indholdet af filen er ligemeget, det fungerer som det skal :)

Mit problem er, at jeg ikke ved, hvordan jeg sikrer, at den fil bliver kørt hver dag til midnat. Min webserver er apache 2.2 kørende på en debian maskine. Måske tråden skulle være i et debian eller apache forum i stedet? Nu tog jeg lige php :p
Jeg havde en idé om, at man kunne gøre det med windows task manager, dengang siden lå på en windowsmaskine. Men det kunne jeg heller ikke rigtig få til at virke efter man lukkede sesionen til fjernskrivebord :/ Men kan man lave noget tilsvarende med debian?

Nogen gode idéer til, hvordan jeg kan være sikker på, at filen/scriptet bliver udført hver dag til midnat?

Mvh
Anders
Avatar billede jweber Nybegynder
27. juni 2007 - 10:34 #1
Foretrækker også de overvejelser du er ude i, hvis du ikke kan finde en løsning på det, kunne du bruge en mere simpel løsning.

Opret en tabel i en database med bare en celle, skriv dags dato. Lav så noget php kode som tjekker om datoen idag er større end datoen der står i databasen, hvis ikkeskal der ikke ske noget, ellers skal din cleanup fil køres og den nye dato for idag skrives ind i databse.

På den måde sikre du at din cleanup fil bliver kørt en gang om dagen, dog ikke ved midnat, men når den første besøgende kommer ind på din side.

Det var et forslag hvis du ikke finde en løsning på det andet.
Avatar billede anderseiler Nybegynder
27. juni 2007 - 10:37 #2
Okay. Men ja, jeg har også overvejet noget i den stil. Det holder bare ikke rigtig til mit formål, at det først bliver kørt ved første besøgende på siden. Det skal gerne køres til midnat hver dag, så det bliver kørt på præcist samme tidspunkt hver dag.
Avatar billede pidgeot Nybegynder
27. juni 2007 - 10:41 #3
Jeg vil foreslå du opretter et cronjob på din server der kører filen. På den måde sikrer du dig at scriptet bliver kørt lige på det tidspunkt du vil have det, og du behøver heller ikke bekymre dig om race conditions, o.l.

Hvis du ikke har mulighed for at sætte det op på din egen server, findes der services på nettet der kan gøre det for dig, eks. http://cronjob.de.

http://en.wikipedia.org/wiki/Cronjob
Avatar billede anderseiler Nybegynder
27. juni 2007 - 10:45 #4
Det er noget i den stil jeg leder efter.

Jeg har lige en eksamen om en times tid, så jeg vender lige tilbage omkring kl. 13:00 :) Så har jeg nok lige et spørgsmål eller to :p
Avatar billede anderseiler Nybegynder
27. juni 2007 - 13:24 #5
Har læst lidt om det, og det virker umiddelbart som om, at det er en linux version af Windows Task Manager - ikke?

Men det som jeg skal bruge, er jo at den her php fil bliver executet. Burde jeg oprette en linux tråd til support med cronjob (da jeg aldrig har hørt om det før og helt klart skal bruge noget support til det), eller kan/vil I hjælpe her? :p

Hvordan laver/installerer/opretter man et cronjob? Og hvad skal jeg skrive, for at en php fil rent faktisk bliver executet? :p

(tilgiv mig, er lidt linux n00b :)
Avatar billede pidgeot Nybegynder
27. juni 2007 - 15:59 #6
Det er meget det samme som Planlagte opgaver i Windows, ja.

Nu har jeg aldrig selv brugt dem (har ikke haft brug for det), men så vidt jeg lige kan se udfra Wikipedia, er det bare et spørgsmål om at indsætte sådan en linie i din crontab-fil (der burde ligge i /etc et sted):

0 0 * * * sti/til/php sti/til/dit/script.php

Du kan naturligvis også bruge wget hvis du vil gøre det via http.

Som sagt har jeg dog ikke arbejdet med det før, så hvis det ikke er nok, må du hellere oprette et nyt spørgsmål (eller bruge en online service).
Avatar billede anderseiler Nybegynder
27. juni 2007 - 16:07 #7
Jeg tror gerne jeg vil gøre det via http, da jeg ellers ikke er så sikker på, at det vil virke.

Er wget noget særligt linux-program-noget? Så kan jeg lukke den her tråd og oprette en ny under debian hvis det er??

Det bedste ville være, hvis man kunne få den til at åbne en URL (f.eks. http://www.site.com/?page=cleanup). :)
Avatar billede pidgeot Nybegynder
27. juni 2007 - 16:55 #8
wget er et helt standard program til Linux der henter en webside, hvilket netop er det du beder om. For at bruge den skriver du bare følgende i stedet for linien før:

0 0 * * * sti/til/wget http://example.com/page.php?action=whatever
Avatar billede anderseiler Nybegynder
27. juni 2007 - 22:58 #9
Hej igen.

pidgeot, det virker perfekt (dog skal der lige stå et brugernavn mellem den sidste * og stien til wget). Men det virker præcist som det skal! :)

Smid nogle svar, så deler jeg point ud :) (med mindre der kommer andre gode forslag?! :)
Avatar billede pidgeot Nybegynder
28. juni 2007 - 07:35 #10
Værsgo :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester