PHP.EE FOORUM   
Nimi:   Pass:   Mäleta mind! 
   Teemad | php.ee esilehele | registreeri | Märgi kõik teemad loetuks | #php.ee Skype vestlus | RSS
UUS TEEMA  OTSI  Lehekülgi: 1
iseseisev automatsiseeritud süsteem. kuidas teha ???
Postitaja: lektor 2004-01-13 12:05:08
Mõtlesin teha omale näitliku automatiseeritud süsteemi katsetamiseks.
Aga kogemustest jääb puudu, seega sooviksin seda teiega arutada, kuidas seda süsteemi teha. Usun et sellest oleks paljudele näidisena abi, kes samuti tahaks kasutada cron, crontab, exec funktsioone protsesside juhtimisel.

// tabelist 'codes' võetakse 'id' järgi random koodid

tabel codes
id | code
----------
1 | 101
2 | 202
3 | 303
4 | 404
5 | 505
6 | 606

// tabelist 'processes' võetakse 'id' järgi random protsessiintervallid ja actions

tabel 'processes'
id | intervall | actions
------------------------
1 | 1 | 1
2 | 1 | 2
3 | 1 | 3
4 | 5 | 1
5 | 3 | 2
6 | 10 | 3
7 | 25 | 1

// actions väli ütleb mitu korda on vaja seda intervalli teha

// tabelis 'starttimer' võetakse protsesside algustund ja protsessi kestvus minutites

tabel starttimer
id | start_hour | time_min
1 | 12:45 | 60
2 | 14:00 | 15
3 | 16:30 | 45

// tabelist 'starttimer' võetakse automaatselt 'start_hour' algusaeg millest alustatakse protsessi ja 'time_min' mis oleks selle protsessi kestvusaeg. tulemused pannakse tabelisse output

tabel output
id | date | time | code
--------------------------
1 | 13.01.04 | 12:00 | 202


Ja seda süsteemi peaks jooksutama Apache, PHP, MySQL server ise.
RE: iseseisev automatsiseeritud süsteem. kuidas teha ???
Postitaja: geo 2004-01-13 16:29:57
Sorry aga mõhkugi ei saa aru, mida se automatiseeritud süsteem tegema peaks?
Mis funktsioonid on cron ja crontab ?
RE: iseseisev automatsiseeritud süsteem. kuidas teha ???
Postitaja: lektor 2004-01-13 18:53:01
antud juhul väljundiks on tabel output ja see kuidas peaks see info sinna tekkima on tekstis kirjas.
RE: iseseisev automatsiseeritud süsteem. kuidas teha ???
Postitaja: lektor 2004-01-14 09:24:49
Mõtlesin natuke asja ringi ja proovin seda paremini seletada.

random (start) + random(processes) + random(codes) = lõpptulemus tabelisse 'output'

Kui cron ja crontab minimaalsemaks täpsuseks on minut, siis kuidas saaks teha seda süsteemi nii et oleks võimalikult sekundi täpsusega.

Alguses mõtlesin et käivitusajaks oleks tund ja minutid ehk nt. 12:45
Aga siis mõistsin et see oleks lombakas, seega peaks olema asi ilmselt viimatisele toimingu ajale suvalise aja juurde lisamine millal toimuks järgmine protsess ja millise aja vältel..

Ja protsessi käivitus tabeli 'start' ajamõõt võiks olla sekundites

id | next_start | protsessi_kestvus
- - - - - - - - - - - - - - - - - - - - - - -
1 | 60 | 60
2 | 300 | 900
3 | 1800 | 900

ja protsessi intervallide ja korduste tabel 'processes' mille ajaühik oleks samuti sekund ja action oleks mitu korda tuleb seda intervalli arvestada

tabel 'processes'

id | intervall | actions
- - - - - - - - - - - - - - -
1 | 60 | 1
2 | 60 | 2
3 | 1 | 3
4 | 5 | 2

Oletame siis et kui cron kontrollib iga minut, kas MySQL andmebaasi tabelis 'engine' on 'status' ON või OFF. Kui on ON, siis käivituvad protsessid ja kui ei ole, siis ei käivitu.

Tabel 'engine'
id | status
- - - - - - - - - -
1 | ON

Kui on ON, siis edasi võtab skript tabelist 'start' järgmise käivitusaja cron kontrollajast alates.

Näiteks kui cron kontrollib 12:45 ja 'engine' on ON ja võtab tabelist 'start' suvalise 'id' mille järgi ta liidab juurde 'next_start' aja ja protsessi kestvuse. Nt. id=2 ja selle järgi next_start=300 ja protsessi_kestvus=900
Seega 12:45 + 300 sekundit = 12:50 (protsessi käivitusaeg on 12:50 ja lõppaeg on 13:05)

Ei tea kas on vajalik lisatabel teha kus oleks kõik vajalik kirjas või jääb mällu?

id | start | end
- -
1 | 12:50:00 | 13:05:00

12:50 võetakse tabel 'codes' suvaline kood 'id' järgi nt. id=3 seega code=303 ja saadetakse info tabelisse output
nt.
id | time | code
- - - - - - - - - -
1 | 12:50:00 | 303

Samas on vaja arvestada tabelis 'processes' olevate andmetega ja see võetakse samuti suvaliselt nt. id=4 ja selle järgi on intervall=5 ja action=2

See tähendab et viimati tehtud toimingu ajale liidetakse juurde intervall mis on näiteks 12:50:00 + 5 sekundit ja see on 12:50:05 ja siis võetakse jällegi suvaline kood tabelist codes ja saadetakse andmed tabelisse 'output'. Ja action=2, see tähendab et intervalli arvestatakse 2 korda, seega tehakse protsessi jällegi 5 sekundi pärast.

Ja kas oleks vajalik veel mingi tabel et vajalik info oleks kirjas?

Seega võib tabelis 'output' jääda selline info

id | time | code
- - - - - - - - - -
1 | 12:50:00 | 303
2 | 12:50:05 | 101
3 | 12:50:10 | 303

Viimati muudetud: 14-01-2004 09:27:47
Muutja: lektor
Põhjus:


Leheküljed: 1

©2002-2013 Martin Rebane & PHP.ee kaasautorid
  0.084184885025