NWN sai uuden master-scriptin

Aloittaja weatherc, lauantai, 10.07.2010, 22:49

« edellinen - seuraava »

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

weatherc

NWN sai näin hellepäivän ratoksi jolloin kivempaa olla sisällä kun ulkona uudet master-scriptit, eli nuo jotka takoo taustalla.

Samalla pieneni skriptien määrä 6:sta (:o) 3:een, josta vielä 1 napsitaan pois kunhan keretään. Myös koodin määrä väheni kolmanneksella :P

Pääidea oli järjestää funktiot järkevämmin sekä esim. napsia pois turhia mysql-kyselyjä.
Funkitot käytiin myös läpi ja paranneltiin tarvittaessa.

Pääpiirteet:
Datan keruu-skripti
Tämä kerää datat (esim clientraw.txt) ja tallentaa ne sellaisenaan tiedostoon. Koska asemia on yli 200 jaetaan ne 4 osaan ja riippuen minuutista haetaan aina yksi osa kerrallaan, eli esim minuutti 1 haetaan ensimmäinen neljäsosa asemista jne. Näin pysyy ajo-aika per kerta hallinnassa eikä kasva liian suureksi. Käytössä datahaussa on cUrl jossa toiminnot esim. yhteyden keston rajoittamiseen jossa käytössä on 4 sekunnin raja, eli yhteys napsitaan poikki 4 sekunnin jälkeen jollei dataa ole kuulunut ennen sitä.
Tämä elää ihan omaa elämää ja on täysin riippumaton muusta skriptistä ja ajetaan ajastuksella 6 minuutin kierrolla (todellisuudessa ajetaan 4 kertaa tuon 6 minuutin aikana jotta saadaan kaikki asemat haettua).

Datan prosessointi
Tämä on varsinainen elefantti ;)
4500 riviä koodia joka tekee kaiken kovan työn ;)
Jaettu 3 osaan:
1. Datan prosessointi, eli raakadatan parsiminen, vika-testi, max/min-taulukoiden päivttäminen ja tietokantojen päivittäminen.
Vikatesti tarkistaa:
- lämpötila on numeerinen (aika oleellista eikö?)
- lämpötila on määrätyn rajan sisällä, vaihtelee kuukausien mukaan, rajat aika väljät,etelän asemille (< 60°N) on omat rajat a´la DMI:n pws-osasto, pohjoisen hitusen yli suomen ennätykset +/- jokunen aste
- lämpötila ei ole joidenkin vikalämpötilojen listalla, lista on täysin manuaalinen ja koostuu joistakin softien käyttämistä "vika-lämpötiloista", esim. -20.0 jota WD käyttää välillä.
- asema ei ole "ilman säteilysuojaa"-listalla, tämäkin on manuaalinen lista johon "joutuu" jos lämpötila alkaa olemaan 40 asteessa jatkuvasti, on ollut jonkin aikaa pois käytöstä ja heti tuli palautetta asiasta joten palautin toimintaan ;)
Lista aktiivinen 09-21 CET, muulloin pääsevät nekin asemat läpi, listalla tällä hetkellä 6 asemaa josta ei ainuttakaan Suomalaista.

Tarkistaa lähinnä lämpötilaa koska seurattuani datoja huomasin että se on eniten vikoja aiheuttava ja samalla vaikein hallittava koska ei ole mitään "turvasatamaa" jota vois käyttää, muut, esim tuulen voi pistää nollaan kun vikalukema ilmenee ja jatkaa matkaa mutta lämpötilassa ei sellaista ole ilman että toplistat sekoavat.
Varsinaisen vikatestin lisäksi tarkistetaan lähes kaikkia lukemia että ovat "inhimilliset", esim sateet ja tuulet positiivisia lukemia ja numeerisia, ettei ole satanut -45 mm eikä tuulta 90 m/s tai abc m/s ja sen sellaisia hassuja lukemia ;)
Mikäli sellainen vika ilmenee, laittaa skripti sen hetken lukeman 0.0:ksi niiltä osin.

Tämä koske vain PWS-asemia, Synop- ja Metar-tiedot (jotka erillinen skripti hakee ja tallentaa omaan tietokantaan) ovat "sellaiset kun tulevat".

Säätyyppi-ikonit käyttävät päivä/yö-vaihtelussa php:n aurinko-aikoja perustuen koordinaateihin, näin saadaan kaikille asemille esim. auringon nousu/laskuajat riippumatta siitä onko asemalta sitä saatavilla.
Kastepiste, sama asia, lasketaan paikan päällä perustuu lämpötilaan ja kosteuteen kunhan molemmat ovat saatavilla.

2. Datatiedoston laatiminen user-kartoille, pistää kasaan JSON-filun kartta-sivuille jossa PWS-, Synop- ja METAR-datat
3. Toplistan laatiminen, kerää tiedot kannasta ja laatii top-listan ja tekee siitä JSON-filun sekä lopuksi zipin molemmista JSON-filuista jota user-kartta sitten hakee.

Tämä skripti ajetaan 6 minuutin välein.

;D