Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: tekstitiedostin poisto halutun ajan kuluttua

Sivun loppuun

olaav [16.04.2005 12:53:19]

#

Onko mitenkään mahdollista tehdä sellaista hässäkkää, että luotu tiedosto posituu automaattisesti halutun aja kuluttua?

Eli siis jos txt-tiedosto luodaan johonkin aikaan, niin se poistetaan automaattisesti kun sen "elinikä" = luontiaika+3600 sekuntia.

Onkohan tämä joku täys mahdottomuus?..:| Ajattelin kuitenkin kysäistä, koska ongelma on vaivannut pitkään.

ajv [16.04.2005 13:28:44]

#

Heitänpä vastakysymyksenä, että miksi se pitää poistaa tunnin kuluttua? Tuohon on varmasti vaihtoehtoinen (parempi) ratkaisukin.

Tuo ei ole mahdollista PHP:llä. Tai no. Voithan laittaa jonkun php-skriptin screeniin pyörimään ja se poistelee vaikka sekunnin välein vanhat tiedostot, mutta en henkilökohtaisesti näe tässä mitään järkeä (turhaa serverin kuormittamista).

olaav [16.04.2005 15:16:22]

#

ajv kirjoitti:

Heitänpä vastakysymyksenä, että miksi se pitää poistaa tunnin kuluttua?

Rakentelen ostoskoria joka ei vaadi rekisteröitymistä vaan sisäänmentäessä käyttäjän tietämättä arvotaan uusi käyttäjätunnus tyyliin: 387364. Kun käyttäjä selaa ja valitsee tuotteita luodaan aputiedostoja (esim. 387364_valinta.txt) Jos käyttäjä lopettaa tiluksen kesken, eikä käytä uloskirjautumista, jää palvelimelle turhia tiedostoja. Nämä tiedostot pitäisi siis poistaa.

Tempfile [16.04.2005 15:55:40]

#

Tuohan hoituu kun laitat tiedot palvelimen sijasta käyttäjän koneelle keksien muodossa. Tällä tavoin ei palvelimelle synny alun perinkään turhia filuja, ja käyttäjän koneeltakin ne tunnin päästä häviävät, kunhan vain säätää niille oikean voimassaoloajan. Täältä voit lukaista tarkemmin, miten se tehdään.

T.M. [16.04.2005 16:11:35]

#

ajv kirjoitti:

Tuo ei ole mahdollista PHP:llä. Tai no. Voithan laittaa jonkun php-skriptin screeniin pyörimään ja se poistelee vaikka sekunnin välein vanhat tiedostot, mutta en henkilökohtaisesti näe tässä mitään järkeä (turhaa serverin kuormittamista).

Kyllähän tuollaisen voi toteuttaa, ei tarvitse kuin tehdä jokin lista tarkistettavien filujen ajoista, ja sitten jos aika on mennyt umpeen, niin se poistaa sen tietyn filun.
Ja aina kun sivu ladataan nii tuo lista käytäis läpi, mutta jos se lista on pitkä, niin ei sitä kannata joka kerta käydä läpi... mutta tuskinpa se lista kauhean pitkäksi kasvaa, jos ne kerran poistetaan aina tunnin välein.

Samalla periaatteella nuo online-laskuritkin toimivat: poistetaan rivi tiedostosta, jos aika on mennyt umpeen.

olaav kirjoitti:

Rakentelen ostoskoria joka ei vaadi rekisteröitymistä vaan sisäänmentäessä käyttäjän tietämättä arvotaan uusi käyttäjätunnus tyyliin: 387364.

En suosittele arpomaan tuota numeroa, vaan käytä mielummin kasvavaa lukua, tyyliin: 0..1..2..3..

Juice [16.04.2005 22:11:41]

#

T.M. kirjoitti:

En suosittele arpomaan tuota numeroa, vaan käytä mielummin kasvavaa lukua, tyyliin: 0..1..2..3..

Tai toinen vaihtoehto olisi uniqid. Tosin tuo kasvava luku on selkeämpi.

Opiskelija [17.04.2005 09:52:46]

#

Sessioneillahan tuo kannattaa tehdä
https://www.php.net/manual/fi/ref.session.php tällöin saadaan parempi toimivuuskin kuin pelkästään kekseillä kun kaikki niitä ei hyväksy.

Tällöin ei myöskään tarvitse kantaa huolta tiedostojen poistamisesta, vaan ne poistetaan automaattisesti serverin toimesta jos niitä ei ole käytetty vähään aikaan.


Kasvavassa luvussa on omat vaaransa, kuten helppo katsoa toisten tilauksia jne... joten ne kannattaa tehdä satunnaisesti vaikkapa tolla uniqid, tosin sessioiden kanssa näitä tunnuksia ei välttämättä tarvitse itse tehdä. Tosin kannattaa myös huomioida sessionin kaappaus mahdollisuus kun kauppaa tekee.

ajv [17.04.2005 10:42:15]

#

T.M. kirjoitti:

Ja aina kun sivu ladataan nii tuo lista käytäis läpi, mutta ...

No joo, tuo on toimiva, ruma purkka-ratkaisu. Mutta loppupeleissähän tuollaista systeemiä ei tuohon edes kannata rakentaa. Ilmi tuli jo, että tähän tarkoitukseen ovat sessiot omiaan.

Ja jos vaikka systeemi toteuttettaisiinkin tekstitiedostoilla, ei ole olennaista poistaa tiedostoa tarkalleen tunnin päästä. Paras ratkaisu on laittaa crontabiin joku skripti poistamaan tiedostot esim. kerran päivässä.


Sivun alkuun

Vastaus

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

Tietoa sivustosta