X:n uusimman kuvan esittäminen

Aloittaja angle, torstai, 08.12.2011, 00:28

« edellinen - seuraava »

0 Jäsenet ja 1 Vieras katselee tätä aihetta.

angle

Mulla on siis valvontakamera, joka tuuttaa kuvia nettisivustokansioon. Kamera ottaa liikettä havaittuaan kuusi kuvaa säädetyllä intervallilla. Kaikki kuvat tulee samaan kansioon mutta kaikille kuville tulee tiedostonimeksi aikaan perustuva nimi. Kuvan voi myös hakea kamerasta suoraan tai PHP skriptillä.

Ajatelin että jos olisi mahdollista PHP:lla saattaa näkyville joka kuudes kuva tyyliin kuudenneksi vanha, 12 vanha, 18 vanha jne. Kuitenkin vaan enintään 10 kuvaa em. metodilla. Mahtaakohan olla mahdollista? kuvia on tosi paljon tuolla kansiossa. Googlailinkin asiaa, mutta en oikein löytänyt mitään mistä pääsisi kiinni asiaan.

khyron

http://www.php.net/manual/en/ref.dir.php
Listaat hakemistossa olevat tiedostot, järjestät ajan(nimen) mukaan ja haet listalta joka kuudennen kuvan nimen.

weatherc

Pikku vinkkinä, ei kannata kerätä tuhansia tiedostoja samaan kansioon, webhotelli saattaa saada stressin siitä (ja jopa sulkea sivut sen takia, esim. eräs Ruåttalainen veneharrastajasivu koki sen kohtalon). ;D Mitään tarkkaa rajaa mulla ei ole antaa koska se varmaan vaihtelee mutta mieleen on jäänyt 1200 tiedostoa joten kannattaa siivota aika ajoin tai järjestää vaikka kuukausien mukaan.

finilves

Tuo ei ole välttämättä hyvä systeemi. Minulla samanlaisella härvelillä pukkasi levytilan täyteen noin 1500 kuvaa.
Kamera pukkaa lumisateella koko ajan kuvia ja mikäli viiveen laittaa kovin pitkäksi ei ole mitään iloa.
Minä ratkaisin ongelman ohjaamalla Gmailiin siitä ei levytila ole loppunut, mutta ei saa kotisivuille myöskään kuvia

weatherc

LainaaMinulla samanlaisella härvelillä pukkasi levytilan täyteen noin 1500 kuvaa.
Se on kyllä totta. 10GB tai 100 GB ei ole mitään jos tuollaisen systeemin laittaa pystyyn ilman minkäänlaista siivousta varsinkin kun ainankin IP-kameroiden kuvat ovat isohkot kooltaankin..

angle

Vähän tarkennan tuota kamera asiaa. Kyseessä on siis tuommoinen halpa IP valvontakamera,jonka yksi kuva on noin 30kt. Verkkokansiosta poistetaan cron:lla yli seitsemän päivää vanhat kuvat kerran päivässä. Kuvia on noin neljä tuhatta samassa kansiossa. Tämä tietysti vaihtelee aktiviteetin ja kellon ajan myötä.

Kysäisin Hotellin isännältä tuosta kuva määrästä. Määrää ei kuulemma on määrätty, mutta suositteli hallinan kannalta pitämään kohtuullisena.

Tästä tuli mieleen että onko kuvien haku 4k kuva määrästä isohko työ, jos vaikka useampi sattuu samaan aikaan kyselemmän. Vai olisiko viisaampi ajaa x väliajoin joku skripti, joka etsii ja nimeää halutut kuvat uudelleen?

Tietysti yksi keino pitää kansion kuvien määrä alhaisena, voisi olla tehdä cron tehtävä joka siirtää esim. päivän kuvat toiseen kansioon, josta kuvat on sitä ennen siirretty toiseen kansioon ja niin edelleen niin että olisi vaikka tuo seitsemän eri kansiota, kullekin päivälle omansa.

finilves

Onko siinä kamerassa infrapunaledit, minulla on ja tänään tullut 12 jälkeen yli 1000 kuvaa. Naruskalla sataa lunta hiljalleen ja kamera säätää
valotusaikaa hämäryyden mukaan siksi tunnistaa liikkeeksi lumihiutaleet.
Hälytys herkkyys on 3 ja säätöalue 1-10.

weatherc

LainaaTästä tuli mieleen että onko kuvien haku 4k kuva määrästä isohko työ, jos vaikka useampi sattuu samaan aikaan kyselemmän. Vai olisiko viisaampi ajaa x väliajoin joku skripti, joka etsii ja nimeää halutut kuvat uudelleen?
Tuo määrä voi hyvinkin jo hidastaa hakua, helppo keino pitää kansioiden koko kohtuullisena on etää tekee jokaiselle päivälle oma kansio päivämäärän mukaan, näin on myös helppo tehdä se näyttöskripti että kurkistaa aina sen päivän kansioon /tai edellisen päivän jotta se 10 tulee täyteen).
Nuo päivämäärät ovat helppoja määritää php:in timestamp/daten avulla.

Taas kun siivoaa vanhan pois määrittää vaan päivämäärän 7 päivää sitten ja pyyhkäsee kyseisen kansion sisältöineen roskiin :)

angle

#8
Tämä homma jäikin sitten talviunille, mutta nyt on palattu takaisin asiaa pohtimaan. Tämän hetken rarkaisu on nyt sitten tehty linux komentorivillä aurinkocomeetan cronia hyväksi käyttäen.

Eli kuvien määrän hallintaan tehty rivi joka listaa kuvat kerran tunnissa aikajärjestyksessä ja siirtää tiedeostot 100:n jälkeen toiseen arkisto kansioon.
mv `find /kansio/kansio/*.jpg -maxdepth 1 -type f | xargs ls -1rt | head -n -100` /kansio/kansio/kansio >/dev/null 2>&1
Sitten sieltä kerran päivässä aikajärjestyksen yli 6000:n tiedoston menevät poistetaan.
rm `find /kansio/kansio/kansio/*.jpg -maxdepth 1 -type f | xargs ls -1rt | head -n -6000`

No sitten tutkin tuota kameran kuva virtaa tarkemmin ja havaitsin että se ottaa, liikettä havaittuaan, 19 kuvaa kolmen sekunnin välein. Edustavin kuva noista 19:sta oli mielestäni 18:sta vanhin. Tämä sitten poimitaan ja uudelleen nimetään toiseen kansioon seuraavalla rivillä 10 minuutin välein.
cp `find /kansio/kansio/*.jpg -maxdepth 1 -type f | xargs ls -1rt | tail -18 | head -1` /kansio/kansio/kansio/tiedosto001.jpg

No niin että näillä mennään ja jonkinlainen ratkaisu löytyi. PHP:tä en ole oppinut vieläkään, kun se vaan tuntuu hiin hankalalta.

edit.
Olikin tail ja head väärin kahdessa ensimmäisessä rivissä, nyt korjattu. Ja myös -maxdepth 1 pitää olla ennen -type valintaa, myös korjattu.