Meni sormi suuhun kun pitäis saada php:lla semmoinen aikaan että joka päivä ekalla suoritus kerralla suoritetaan tietty toiminto.
cronilla suoritat php skriptin tai jos on tarpeeksi kävijöitä niin tarkistat ajan ja sen perusteella päätät suoritetaanko (tai käytät palvelua joka "käy" sivulla tietyn ajan välein)
Tein sillai et paivä tallennetaan tiedostoon ja jos se on eri kuin nykyinen päivä niin si suoritetaan se toiminto.
Esimerkiksi:
- Katsot mikä päivä tänään on!
$TamaPaiva = date(d.m.Y); // 11.08.2007 $VerrattavaPaiva = date(d.m.Y);
- Sinulla on piilokenttä
<input type="hidden" value="ElaNayta" name="ElaNayta">
- Suoritat toiminnon sivulla mikä pitää tehdäkin, sivu latautuu uudestaan
if($TamaPaiva == TamaPaiva && $_REQUEST['ElaNayta'] == '') { echo 'Muuttujan TamaPaiva arvo on sama, kuin muutujan VerrattavaPaiva, sekä arvoa ElaNayta ei ole asetettu'; } else { }
Eli kun sivu latautuu ensimmäisen kerran, asetat arvon ElaNayta ja toimintoa ei enää suoriteta. Tietenkin jos haluat niin, että jos selain suljetaan ja sama toimii taas, niin sinun tulee tallentaa tämä tieto tekstitiedostoon, cookieen tai tietokantaan. Toivottavasti jotakin selventi. :D
vasta_alkaja:
Eihän se homma nyt noin toimi.
Vaan tieto, onko kyseinen toiminto ajettu jo tänään pitää tallentaa palvelimelle, eikä siitä mitään ylimääräisiä formin kenttiä aleta lisäilemään enää käyttäjälle, vaan pidetään tieto silloinkin vain palvelimella. Ei tarvita mitään uudelleen latauksia, vaan toiminto ajetaan esim. ennen sivun tulostamista.
sivulataukset pseudokoodilla kutakuinkin näin:
// toiminnon tarkistaminen mieluiten kokonaan omaksi toiminnoksi // if ( !toimintoOnJoAjettuTänään() ){ tallennaTietoEttäToimintoOnAjettu(); // tallentaa tiedon, että toiminto on ajettu, sijoita todellisuudessa esim. ajetaanToiminto -funktion sisälle ajetaanToiminto(); } // // ja funktio loppuisi siis tähän normaaliSivunRakentaminen ();
edit:
siis samalla tavalla kuin Lahha jo sanoikin.
Kieltämättä noin se toimisi varmasti paremmin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.