Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Hakemiston tyhjennys

Sivun loppuun

masiaro [30.09.2006 15:52:27]

#

Olen yrittänyt väsätä itse koodia jonka avulla data-hakemistoa tyhjennetään automaattisesti 1h välein tai 1vrk välein, en onnistu mitenkään :S

Osaako kukaan neuvoo mua? =)

Blaze [30.09.2006 16:07:03]

#

Komenna crontab -e ja lisää sinne @hourly rm /data/* tai @daily rm /data/*

Heikki [30.09.2006 16:41:18]

#

Tämä nyt riippuu ihan työkaluistasi ja ympäristöstäsi...

Jos sinulla on UNIX-pohjainen palvelin (esim. Linux) ja sinne oikeudet croniin, hoituu homma Blazen mainitsemalla tavalla (tarkemmat ohjeet croniin suomeksi).

Windows-palvelimille on myös varmaan jokin vastaava systeemi.

Toisaalta jos haluat käyttää PHP:tä (tai vastaavaa), voit aina tehdä niin että kun skripti suoritetaan, se tarkistaa onko data-hakemiston tyhjennyksestä jo yli tunti ja jos on, niin tyhjentää sen.

masiaro [30.09.2006 19:00:16]

#

Ojoi unohdin kertoa että kyseessä on sisi php-juttu... En kuitenkaan onnistunut php:tä toimimaan se tyhjennysjuttu.

Antti Laaksonen [30.09.2006 19:29:27]

#

Tässä on yksinkertainen esimerkki:

<?php

$uusi = false;

if (!file_exists("viimeksi.txt")) {
    // viime tyhjennyksen aikaa ei tiedetä
    $uusi = true;
} else {
    $tiedot = file("viimeksi.txt");
    if (time() - $tiedot[0] > 60 * 60) {
        // viime tyhjennyksestä on kulunut tunti
        $uusi = true;
    }
}

if ($uusi) {
    // tallennetaan tyhjennysaika tiedostoon
    $tied = fopen("viimeksi.txt", "w");
    fwrite($tied, time());
    fclose($tied);
    // poistetaan hakemiston kaikki tiedostot
    foreach(glob("turha/*.*") as $nimi) {
        unlink($nimi);
    }
}

?>

Tiedostossa viimeksi.txt lukee, milloin hakemisto on tyhjennetty viimeksi. Jos aikaa on kulunut tarpeeksi, tyhjennetään hakemisto ja tallennetaan uusi aika tiedostoon. Tässä esimerkissä hakemisto "turha" tyhjennetään tunnin välein (60 * 60 sekuntia), mutta näitä asioita on helppo muuttaa.

Damiqib [30.09.2006 19:47:03]

#

PHP:ssä on vaan se huono puoli, että se skripti pitää kuitenkin ajaa joko jollain ohjemalla tai manuaalisesti halutun ajan välein.

*nix ympäristössä esim. cronilla ajattaa tuon filun halutun ajan välein, josta seuraa se, että tuota filua ei tarvitse ollenkaan, vaan homman voi tehdä Blazen esittämällä tavalla suoraan.

Toisaalta jos skripti tulee nettisivulle, jossa on kävijöitä, niin silloin tuo PHP-versiokin toimii, mutta koska tarkistus tehdään jokaisen käyttäjän kohdalla, lisää se palvelimen kuormaa promillen sadasosan. :D

EDIT x monta kertaa: Miten voi typottaa näin lyhyeen tekstiin näin paljon?

Niko [30.09.2006 21:46:03]

#

janne-t:
http://www.webcron.org/index.php?&lang=en ajaa halutun sivun haluttuina aikoina. Jos ei ole crontabi oikkia.

Ja ainahan voi tehdä phpn joka on ikuisessa loopissa olettaen että ei ole maksimi aikaa. (ignore_user_abort ja register_shutdown_handler on kivoja)

masiaro [06.10.2006 15:35:44]

#

Jee kiitos!


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta