Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako napraviti skriptu koja se periodicno izvrsava

[es] :: PHP :: Kako napraviti skriptu koja se periodicno izvrsava

[ Pregleda: 3044 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

JimRainor
Novi Sad

Član broj: 26018
Poruke: 264
*.nspoint.net.



+2 Profil

icon Kako napraviti skriptu koja se periodicno izvrsava04.04.2007. u 15:52 - pre 207 meseci
pozdrav svima, kako da napravim skriptu koja nije vezana za korisnike i html, nego se na serveru izvršava periodično, na svakih pola sata, recimo. Ne treba mi ništa zaista konkretno, bar ne u ovom trenutku, ali šta ako zelim da, recimo napravim php turn-based strategiju, i poželim da se na svakih pola sata sve naredbe igrača izvrše i igra pomeri za jedan turn?

I uopšteno me interesuju alternative standardnom vezanom-za-stranicu PHP programiranju. Kako se još mogu pisati serverske skripte u PHP-u i za šta sve mogu da služe?

[Ovu poruku je menjao JimRainor dana 04.04.2007. u 17:08 GMT+1]

[Ovu poruku je menjao JimRainor dana 04.04.2007. u 17:35 GMT+1]
We've arranged a global civilization in which the most crucial elements profoundly
depend on science and technology. We have also arranged things so that almost no
one understands science and technology. This is a prescription for disaster.

Carl Sagan
 
Odgovor na temu

Not now, John!

Član broj: 231
Poruke: 1318
87.250.121.*



+4 Profil

icon Re: Kako napraviti skriptu koja se periodicno izvrsava04.04.2007. u 16:05 - pre 207 meseci
Pada mi na pamet jedino da kontaktiraš administratora da ti odradi to:
Code:
/usr/bin/php "/home/korisnik/www/skripta.php"

ili tako nešto.

Druga mogućnost je da tvoj računar svakih pola sata poziva odgovarajuću skriptu.

Da li si siguran da to ne možeš drugačije riješiti?
"I'd take the awe of understanding over the awe of ignorance any day."
- Douglas Adams
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
194.106.174.*

Sajt: https://avramovic.info


+46 Profil

icon Re: Kako napraviti skriptu koja se periodicno izvrsava04.04.2007. u 16:53 - pre 207 meseci
Na Windowsu se za to koristi Task Scheduler, na *nix sistemima Cron Job. Ako imaš cPanel na sajtu možeš prilično lako da podesiš cron.

p.s. Ovo nema veze sa PHP-om
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

markom
Marko Milivojević
Network Engineer
Google
Mountain View

Član broj: 18427
Poruke: 4227
*.du.xdsl.is.

Sajt: https://markom.rs


+16 Profil

icon Re: Kako napraviti skriptu koja se periodicno izvrsava07.04.2007. u 12:01 - pre 207 meseci
Pošto još uvek ne znamo o kojoj platformi je reč, neka stoji u PHP dok ne saznamo.

Sa druge strane, verujem da ovo može da bude i FAQ tema, jer sam viđao ovakva pitanja i ranije. Možda moderator da napiše duži odgovor kako uraditi ovo na *nix, a kako na Windows platformi i imamo lep odgovor na često pitanje...?
 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
*.dynamic.sbb.co.yu.



+19 Profil

icon Re: Kako napraviti skriptu koja se periodicno izvrsava07.04.2007. u 12:18 - pre 207 meseci
Može i ovako:

Uobičajne skripte nek normalno sarađuju s bazom i kroz njih igrači šalju svoje poteze i čitaju trenutno stanje iz baze.

Napraviš svoju "engine" skriptu koja će imati:
ignore_user_abort(true);
set_time_limit(0);

pa u (recimo do{ }while();) petlji treba da
1. prodje kroz sve poslate poteze, da ih obradi i ponovo snimi u bazu,
2. napravi pauzu pola sata (možda sleep() ili nešto još preciznije),
3. očita kontrolne markere iz baze da ako zatreba može da stane (die();).

A ti iz administacione skripte kontrolišeš te kontrolne markere u bazi.
Kad treba da pokreneš engine jednostavno je prozoveš kroz adresnu liniju i zaustaviš brovzer, engine će nastaviti da radi.
Naravno treba ti i podatak da li već radi u pozadini da ne duplira posao.
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
Odgovor na temu

Funkman
web administrator
KC

Član broj: 142276
Poruke: 13
*.adsl.net.t-com.hr.

Sajt: www.virtualnet.hr


Profil

icon Re: Kako napraviti skriptu koja se periodicno izvrsava15.04.2007. u 12:28 - pre 207 meseci
Mucim muku s tim vec par dana, smisljam kako.

Cron Job je odlican, ali npr, pitam se sto ako nemam Cpanel. (sto i nemam na nekim hostinzima)

Pa mi je pala ideja na pamet, no to tek jutros, i ne znam jos je li izvediva:

Naime:

Iz mysql baze vucem zapis iz polja u formatu "datetime".

Postavim varijablu $time = 1800;
Preformatiram u "datetime".

Unesem to u polje2 (npr) $datetime + $time.

I time imam vrijeme proslog izvođenja i slijedećeg. I interval perioda.

S malo JS mogu sredit neki counter unatrag od zadnjeg "refresha", dinamicno s php slozit da se od zadnjeg "datetime" oduzme trenutni timestamp, i po isteku tih 1800 sekundi inicirati <meta http-equiv="refresh"> na skriptu koja bi updejtala sve procese koje treba pa s header: Location vratila na brojac opet. Da s ovim oduzimanjem trenutnog vremena od proslog i stavljanja u php varijablu bi trebalo biti izvedivo da u trenutku logiranja korisnika vrijeme od zadnjeg refresha bude tocno. (npr. 14:22min) ukoliko se logirao 15:38min nakon zadnjeg refresha.

E, i da. I nekud, naravno, taj brojac u <iframe> puknut na web. (sto ne bi bio problem uklopiti buduci da bi se radilo o obicnom <input> polju, pa stane svagdje.

Sad, to je cisto ideja, al je iznosim ovdje. Nov sam clan, da Al registrirah se s namjerom da sudjelujem ovdje aktivno, ucim dalje i podijelim ono znanja sto imam s ostalima, pa me sad zanima ako ko ima kakav konstruktivni uvid u eventualne negativne strane ovog rjesenja.

Ja cu ga u međuvremenu pokušat sastavit.

Da, i ako ste i skuzili uopce sto sam mislio iz mojih baljezgotina :P

Pozz.
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
77.46.247.*

Sajt: https://avramovic.info


+46 Profil

icon Re: Kako napraviti skriptu koja se periodicno izvrsava15.04.2007. u 13:03 - pre 207 meseci
Koliko sam shvatio, to će raditi, ali samo dok neko ima otvorenu tu stranicu u browseru. Samo od sebe ne može tako da radi, osim preko cron-a (a Cron Job ne mora samo preko cPanela da se podešava, vidi sa teh. podrškom tvog hostinga).
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

Funkman
web administrator
KC

Član broj: 142276
Poruke: 13
*.adsl.net.t-com.hr.

Sajt: www.virtualnet.hr


Profil

icon Re: Kako napraviti skriptu koja se periodicno izvrsava15.04.2007. u 14:16 - pre 207 meseci
Da, u biti, osim crona, ne postoji nacin da se neovisno od usera nesto izvrsi na bazi vremena?

Mislim, i JS i PHP ne znace puno, ukoliko nema korisnika koji bi imali otvorenu stranicu. Makar to bio i index.

Super je rjesenje bilokoje za stranicu s 1000 usera dnevno, igru pogotovo, jer neko mora bit online, ali ako je 0 korisnika online, nista se ne desava :S

EDIT:

Ili...

Ako postoji funkcija koja bi upisivala vrijeme zadnjeg logina, ili logouta, pa onda pri narednom logiranju oduzela to vrijeme od trenutnog, dobila razliku (interval) te izracunala koliko je proslo intervala punih (od 30 min) a ostatak stavila u counter (buduci da bi se po tome i znao iduci refresh), mozda bi to upalilo.
A naravno, update podataka u mysql ili di vec, napravi prema tim iskalkuliranim podacima. Moja je pretpostavka da niko nece ici radit MMOG bez da ima nekakav engine, kako bih to nazvao, po kojem funkcionira igra. Ili pak aplikacija.

Samo ostaje pitanje kako precizno i pouzdano rijesit problem sto neki ljudi ne koriste logout, vec ugase prozor.

Samo da napomenem, jasno, cron je najbolje rjesenje, ali me sad preokupira ikakav alternativni nacin za time based procesiranja na sajtu.



[Ovu poruku je menjao Funkman dana 15.04.2007. u 15:40 GMT+1]
 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
*.dynamic.sbb.co.yu.



+19 Profil

icon Re: Kako napraviti skriptu koja se periodicno izvrsava15.04.2007. u 15:34 - pre 207 meseci
Ono što sam ja napisao par pre postova je sasvim upotrebljivo.
Ja to koristim za slanje newslettera a da ne preopteretim mail server.
I radi. Proces potraje i po par sati, ali lepo periodično napravi pauzu i posle nastavi.

Ti možeš praviti sitne pauze, 10 sekundi, i onda upoređivati time() sa zakazanim vremenom i ako nije, opet na spavanje. Jednio ti kao administrator moraš povremeno proveravati radi li skripta u pozadini, da bi je ponovo pokrenuo ako hosting server resetuje Apacha.
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
Odgovor na temu

Funkman
web administrator
KC

Član broj: 142276
Poruke: 13
*.adsl.net.t-com.hr.

Sajt: www.virtualnet.hr


Profil

icon Re: Kako napraviti skriptu koja se periodicno izvrsava15.04.2007. u 18:38 - pre 207 meseci
Ovako, izradio sam skriptu.

Imam "vrijemerefresha" polje u tablici user mysqla, koje ima obican varchar(20) za timestamp.

Imam tablice: trenutno i iduce.
Tu smjestam trenutni timestamp turna (aktualnog), i iduceg (trenutni + 1800). Za taj primjer s pola sata.

Vadim vrijednosti u php. S JS imam dinamicni brojac unatrag. Na pocetku koda stoji obican mysql_query koji unosi time(); u polje "vrijemerefresha", tako da razlika od tog vremena i vrijednosti u polju "trenutno" bude varijabla za brojac.

I onda, kad se interval zavrsi, iliti dođe do nule, ajaxom vucem fajl koji unosi trenutni time() u polje "trenutno" te "trenutno+1800" u polje "iduce" u bazu.

I simbolicno vraca tekst u <div> "turn gotov".

Zasad je to to.

Kasnije cu pejstat kod, samo me zanima detaljnije o cem, mVeliki, pricas, jer ne kopcam bas.
Tu skriptu ti sam pokreces,ili?
 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
*.dynamic.sbb.co.yu.



+19 Profil

icon Re: Kako napraviti skriptu koja se periodicno izvrsava16.04.2007. u 07:12 - pre 207 meseci
Da, moraš je za početak sam pokrenuti s tim da ako staviš ignore_user_abort();set_time_limit(0); možeš slobodno prekinuti browser (jer nećeš dočekati kraj izvršavanja) a skript će nastaviti da radi u pozadini.

Radiće dok ne prepozna uslov za zaustavljanje (tvoja akcija) ili ako ga viša sila ne prekine (greška u kodu, reset Apacha).
Bilo bi dobro da periodično upisuje tekuće vreme u bazu ili datoteku, da bi mogao da prepoznaš dali radi ili je stao.
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
Odgovor na temu

agvozden
Aleksandar Gvozden
founder
Info-G
Beograd

Član broj: 37813
Poruke: 1123
*.ptt.yu.

Sajt: www.gvozden.info


+68 Profil

icon Re: Kako napraviti skriptu koja se periodicno izvrsava16.04.2007. u 08:39 - pre 207 meseci
Ukoliko nemas dostupan cron na svom serveru mozes to aktivirati na drugom pa preko web interfejsa pokrenuti kron.

Na netu postoji nekoliko besplatnih servisa sa kron uslugom - ja sam koristio neki nemacki, ali se ne secam linka.

Proguglajte... (free cron jobs... or something)
 
Odgovor na temu

Funkman
web administrator
KC

Član broj: 142276
Poruke: 13
*.adsl.net.t-com.hr.

Sajt: www.virtualnet.hr


Profil

icon Re: Kako napraviti skriptu koja se periodicno izvrsava16.04.2007. u 08:47 - pre 207 meseci
Citat:
agvozden: Ukoliko nemas dostupan cron na svom serveru mozes to aktivirati na drugom pa preko web interfejsa pokrenuti kron.

Na netu postoji nekoliko besplatnih servisa sa kron uslugom - ja sam koristio neki nemacki, ali se ne secam linka.

Proguglajte... (free cron jobs... or something)



E, hvala. Stvarno nisam znao da se i to moze. Iskreno, nikad radio s cronom dosad.
Pa cu pokusat, jer me cito zanima u praksi rad s cronom.

Nego, imam pitanje(za nekog nadleznog):

Jel u redu ako pejstam kod ovdje za svoju inacicu "crona"?
Mislim, radi i u osnovnoj konstrukciji je gotova, pa ako si je netko za ikoju drugu svrhu iskoristi, slobodno sto se mene tice. Također isto vrijedi i za dorade koje netko izvede na njoj. A uostalom, ovo je php sekcija, a za rad ove moje inacice treba i JS, i AJAX, i mysql, pa ono...razumijete ;)
 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Moderator
Član broj: 31848
Poruke: 1792
82.208.211.*

Sajt: norway.dakipro.com


+190 Profil

icon Re: Kako napraviti skriptu koja se periodicno izvrsava16.04.2007. u 09:29 - pre 207 meseci
Pa nije problem da pastujes, ali ne vidim svrhu, osim ako nisi pravio neku klasu koja moze da koristi sirem broju ljudi. Ako je obicna skripta, koja ce nesto da pise/menja po bazi, onda je beskorisno jer svakom treba kron za nesto drugo, pa je najlakse sam napisati skriptu Pojasni sta skripta radi, pa da vidimo. Ako pricamo o cron skripti?
 
Odgovor na temu

[es] :: PHP :: Kako napraviti skriptu koja se periodicno izvrsava

[ Pregleda: 3044 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.