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

Izvršavanje funkcije u pozadini

[es] :: PHP :: Izvršavanje funkcije u pozadini

Strane: 1 2

[ Pregleda: 6266 | Odgovora: 30 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

misk0
.: Lugano :. _.: CH :.

SuperModerator
Član broj: 634
Poruke: 2824
*.adsl.ticino.com.

ICQ: 46802502


+49 Profil

icon Re: Izvršavanje funkcije u pozadini05.10.2010. u 22:55 - pre 164 meseci
Sto se mene tiche tebi treba neki daemon koji ce da monitorishe statuse u pozadini i radi nezavisno od sajta. Mozda bi to mogao i da napises u PHPu, ali mozda je boje imati neki drugi server container za to.
:: Nemoj se svadjati sa budalom, ljudi cesto nece primjetiti razliku ::
 
Odgovor na temu

Faun
Sasa Jovanovic
Beograd

Član broj: 45529
Poruke: 11
*.adsl-a-1.sezampro.yu.



+2 Profil

icon Re: Izvršavanje funkcije u pozadini06.10.2010. u 11:03 - pre 164 meseci
Citat:
misk0: Sto se mene tiche tebi treba neki daemon koji ce da monitorishe statuse u pozadini i radi nezavisno od sajta. Mozda bi to mogao i da napises u PHPu, ali mozda je boje imati neki drugi server container za to.

Da, baš to. Samo, ovo je modul za Drupal, pa je potrebno da prosečan korisnik Drupala može lako da ga instalira, bez dodatnih podešavanja.

Citat:
Goran Rakić: Mislim da to što si zamislio može jednostavnije da se implementira.

Počni od problema, a ne od rešenja. Hajde definiši te agente, šta oni rade i kako se odnose prema drugim objektima.

Onaj sleep ne prekidaš (možda može nekim signal handlerom, ali to je nepotrebno). Ako hoćeš aktivno čekanje, onda imaš petlju tipa:
Code (php):
while(true) {
  // nešto
  sleep(1);
}

Sada u samoj petlji možeš da postaviš uslov tipa if(treba_li_da_se_izvrši) ..., i ako ne treba ideš ponovo na čekanje od 1sec.

Još bolje je da imaš neku blokirajuću funkciju, na primer socket_select ili zatražiš neki katanac (engl. lock), koja će ti prekinuti čekanje tek kada se dogodi neki upis na jednom od nadgledanih socketa ili kada oslobodiš katanac iz druge niti/procesa.

Međutim veoma je verovatno da u ovom tvom konkretnom slučaju sve to može jednostavnije.

Ni na kraj pameti da primenim sokete. Ekstra ideja, ali koliko sam video i za to je potrebno ručno kompajlirati php. Tako da i to otpada.

Odradiću ga preko one jedne funkcije u cron-u, a katanac ću da čuvam u bazi. I ja imam osećaj da postoji neko elegantnije rešenje, ali mi trenutno ništa ne pada na pamet. Ako nekoga zanima konkretan problem koji rešavam, može da pogleda ovde.
 
Odgovor na temu

Faun
Sasa Jovanovic
Beograd

Član broj: 45529
Poruke: 11
*.adsl-a-1.sezampro.yu.



+2 Profil

icon Re: Izvršavanje funkcije u pozadini07.10.2010. u 20:43 - pre 164 meseci
Našao sam odgovor na moje početno pitanje. To je funkcija exec koja ima mogućnost da program poziva u pozadini.

Code (php):

exec("php example.php > log.txt &");
 


Za izvršavanje u pozadini je zadužen znak na kraju "&" i potrebno je uraditi redirekciju izlaza (u ovom slučaju u fajl log.txt).

Ovo je, doduše, rešenje samo za Linux. Problem ovoga je što će teško koji hosting davati mogućnost za korišćenje ove komande :)
 
Odgovor na temu

vatri
Banja Luka, RS

Član broj: 68697
Poruke: 1006
*.dynamic.dsl.t-2.net.



+18 Profil

icon Re: Izvršavanje funkcije u pozadini08.10.2010. u 15:08 - pre 164 meseci
I gdje/kad ces pokretati ovaj kod? Sta ako se server restartuje? :)
 
Odgovor na temu

m_k
Sarajevo [BiH]

Član broj: 29364
Poruke: 340
109.175.76.*

Sajt: www.mkscripts.net


Profil

icon Re: Izvršavanje funkcije u pozadini08.10.2010. u 16:19 - pre 164 meseci
Za bilo koju varijantu multithredinga moras ako nista imati instaliranu posebnu extenziju za php, a to prosjecan server sigurno nema.

Ja bih to rijesio preko Cron-a na slijedeci nacin:
- nastimati tu skriptu da se izvrsava svake minute
- e sad planiras da ce se skripta izvrsavati 55 sekundi, i onda prekinuti da bi slijedeci cron poceo
- unutar skripte vrtiti while petlju i svake sekunde pokusavit selektovati aukcije koje se zavrsavaju za manje od 10 sek
- ako ti query vrati neki rezultat odratiti sto imas da odradis na toj aukciji
** Ovdje ces imati ovih 5 sek praznog hoda kad se nista nece desavati. Nikad ne znas koliki ce ti load biti na serveru i koliko ce trebati skripti da se pokrene. Zbog toga mozes ubaciti neki counter koji ce ti garantovati da je aukcija 10 puta "pingana", tj da se odrađeno to sto se mora odraditi 10 puta (Ovo bi moglo uzrokovati da se zadnjih 10 sek aukcije razvuce na 15 sek, a lvaljda tih 5 sek nikome ne znaci previse).

Nadam se da nisam previse konfuzan :)
May the force be with you...
 
Odgovor na temu

Vladica Savić
Software Developer
Toronto, Canada

Član broj: 26699
Poruke: 654



+5 Profil

icon Re: Izvršavanje funkcije u pozadini08.10.2010. u 18:16 - pre 164 meseci
Citat:
m_k: Za bilo koju varijantu multithredinga moras ako nista imati instaliranu posebnu extenziju za php, a to prosjecan server sigurno nema.....


Izvini, jel mozes malo vise detalja o ovome?
Jer koliko ja znam php nema mogucnost rada sa thread-ovima ili se varam?
 
Odgovor na temu

m_k
Sarajevo [BiH]

Član broj: 29364
Poruke: 340
109.175.58.*

Sajt: www.mkscripts.net


Profil

icon Re: Izvršavanje funkcije u pozadini08.10.2010. u 18:43 - pre 164 meseci
Citat:
Vladica Savić: Izvini, jel mozes malo vise detalja o ovome?
Jer koliko ja znam php nema mogucnost rada sa thread-ovima ili se varam?

http://kevin.vanzonneveld.net/...article/create_daemons_in_php/
May the force be with you...
 
Odgovor na temu

Vladica Savić
Software Developer
Toronto, Canada

Član broj: 26699
Poruke: 654



+5 Profil

icon Re: Izvršavanje funkcije u pozadini08.10.2010. u 20:14 - pre 164 meseci
Pa da, al to nije thread u pravom smislu te reci.
 
Odgovor na temu

Faun
Sasa Jovanovic
Beograd

Član broj: 45529
Poruke: 11
*.adsl-a-1.sezampro.yu.



+2 Profil

icon Re: Izvršavanje funkcije u pozadini08.10.2010. u 20:15 - pre 164 meseci
Citat:
m_k: Za bilo koju varijantu multithredinga moras ako nista imati instaliranu posebnu extenziju za php, a to prosjecan server sigurno nema.

Ja bih to rijesio preko Cron-a na slijedeci nacin:
- nastimati tu skriptu da se izvrsava svake minute
- e sad planiras da ce se skripta izvrsavati 55 sekundi, i onda prekinuti da bi slijedeci cron poceo
- unutar skripte vrtiti while petlju i svake sekunde pokusavit selektovati aukcije koje se zavrsavaju za manje od 10 sek
- ako ti query vrati neki rezultat odratiti sto imas da odradis na toj aukciji
** Ovdje ces imati ovih 5 sek praznog hoda kad se nista nece desavati. Nikad ne znas koliki ce ti load biti na serveru i koliko ce trebati skripti da se pokrene. Zbog toga mozes ubaciti neki counter koji ce ti garantovati da je aukcija 10 puta "pingana", tj da se odrađeno to sto se mora odraditi 10 puta (Ovo bi moglo uzrokovati da se zadnjih 10 sek aukcije razvuce na 15 sek, a lvaljda tih 5 sek nikome ne znaci previse).

Nadam se da nisam previse konfuzan :)

Nisi konfuzan :). Na kraju će rešenje verovatno i biti takvog tipa. Razmišljam i o tome da se skripta ne prekida na 55 sekunde, već da novi cron pokrene novu skriptu koja će imati uslov da se prekine ukoliko je neka već aktivna. Tj., da mi cron služi samo kao pokretač ukoliko nekim slučajem skripta pukne. Ne znam da li je to moguće, da li će se skripte pokretati u paraleli ili će mi pokretanje druge prekinuti prvu?


Ekstra članak. PCNTL je stvarno ekstra stvar, samo ne znam kada će da ga ubace i u klasične verzije php-a. Kad budem imao vremena baš ću da iskompajliram php sa tom ekstenzijom da vidim kako radi.
 
Odgovor na temu

Faun
Sasa Jovanovic
Beograd

Član broj: 45529
Poruke: 11
*.adsl-a-1.sezampro.yu.



+2 Profil

icon Re: Izvršavanje funkcije u pozadini08.10.2010. u 20:22 - pre 164 meseci
Citat:
Vladica Savić: Pa da, al to nije thread u pravom smislu te reci.

Je l' može malo pojašnjenje o ovome? Po meni PCNTL zadovoljava sve zahteve neophode za rad sa nitima. E sad, ja opet nisam stručnjak u tome, pa me zanima šta je to što mu fali.
 
Odgovor na temu

m_k
Sarajevo [BiH]

Član broj: 29364
Poruke: 340
109.175.91.*

Sajt: www.mkscripts.net


Profil

icon Re: Izvršavanje funkcije u pozadini08.10.2010. u 20:33 - pre 164 meseci
Citat:
Faun: Ne znam da li je to moguće, da li će se skripte pokretati u paraleli ili će mi pokretanje druge prekinuti prvu?
Pokretat ce se paralelno al sa nekim primitivnim lock-om bi vjerovatno i o tome mogao voditi racuna.
May the force be with you...
 
Odgovor na temu

[es] :: PHP :: Izvršavanje funkcije u pozadini

Strane: 1 2

[ Pregleda: 6266 | Odgovora: 30 ] > FB > Twit

Postavi temu Odgovori

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