Permalänk
Medlem

Tidsbestämda PHP-script

Jag har längre grubblat på en grej. I sånna här typiska nyhetssystem/CMS kan ju t.ex skriva en nyhet och sen säga åt nyheten att komma upp imorn eller om en vecka. Men jag undrar hur det sköts egentligen?

Visst är det väl ändå alltid besökare som triggar kod att utföra saker?
Jag menar, om jag lägger till en nyhet och säger att den ska visas om två dagar så händer väl inte det av sig självt efter två dagar? Det är väl först en besökare besöker sidan och då körs alla script och då hittar den en nyhet som ska visas och då kör eventuell mysql-kod eller va det nu kan va.

Visst är det så, eller kan script köras helt automatiskt utan att "triggas" ?

Permalänk
Citat:

Ursprungligen inskrivet av kismo
Jag har längre grubblat på en grej. I sånna här typiska nyhetssystem/CMS kan ju t.ex skriva en nyhet och sen säga åt nyheten att komma upp imorn eller om en vecka. Men jag undrar hur det sköts egentligen?

Visst är det väl ändå alltid besökare som triggar kod att utföra saker?
Jag menar, om jag lägger till en nyhet och säger att den ska visas om två dagar så händer väl inte det av sig självt efter två dagar? Det är väl först en besökare besöker sidan och då körs alla script och då hittar den en nyhet som ska visas och då kör eventuell mysql-kod eller va det nu kan va.

Visst är det så, eller kan script köras helt automatiskt utan att "triggas" ?

Alltså, i detta fallet kan du ju göra så att du har en select sats som tar ut den senaste nyheten men har en where där det står "WHERE Datum <= idag"

edit: sen så kan saker köras ifall du har någonting på servern som kollar av....

Visa signatur

Asus Striker II Extreme / XFX Geforce GTX 280 / Q9450 @ 3.6GHz/ TRUE Noctua 120/ 4x1GB Corsair TWIN3X2048-1333C9DHX / X25-M G2 80gb Velociraptor / Win 7 Ultimate x64/ Antec P190

MovieDatabase

Permalänk
Medlem

Som KurreKula sa. Bara sätt en datum (gärna unix timestamp) när du vill att nyheten ska börja synas. Sen när du selectar nyheter så hämtar du bara nyheter som är äldre än time().

Nu behöver du inte veta detta i detta fallet. Men alltid bra att veta iaf (då du undra lite om detta). Du kan använda crontab i *nix eller "schemalagda aktiviteter" i windows för att köra PHP script vid bestämda tidpunkter.

Permalänk

Såhär har jag automatiserat ett PHP-script. Det går ju göra genom att antingen köra PHP-cli eller helt enkelt besöka sidan med wget som en "web spider". Det sistnämnda är den tekniken jag valt. Fungerar under Linux.

Detta är ju dock en helt onödig lösning på just nyhetssidan eftersom du inte har något behov av att ladda nyheten innan någon besökare läser den ändå.

Crontab:

* * * * * bash /home/anton/update.sh

Bash-scriptet:

#!/bin/bash for ((i=0;i<6;i+=1)); do /usr/bin/wget --spider "http://www.exempel.com/index.php?automate=true"; sleep 10; done

(Eftersom crontab kan köras snabbast 1 gång i minuten upprepas scriptet 6 gånger och väntar i 10 sekunder mellan varje loopning. Jag valde att inte göra en oändlig loop ifall något skulle krascha eller liknande).

Visa signatur

"Knowledge amplification. What he learns, we all learn. What he knows, we all benefit from."

Permalänk
Medlem

Ok. Men hur fungerar "schemalagda aktiviteter" om allt ligger hos ett webhotell och inte egen server? Eller *nix crontab? Som ni säger kan man ju lösa detta på bättre sätt om det just handlra om en nyhet men säg ett automatiskt mailutskick? Det behöver ju köras helt automatiskt.

Hur kommer man fram till en lösning om jag t.ex vill köra en mail() en viss tidpunkt och alla mina filer ligger hos ett webhotell?

Permalänk
Medlem

Finns webbhotell som stödjer att köra php-filer vid tidpunkter om jag inte är ute o cyklar.

Permalänk
Medlem

Googla på webcron tex så lär du hitta något.

Visa signatur

Behind every great fortune there is a crime. - Honoré de Balzac
simonb @ irc