php.hr
Dobrodošli, Gost. Molimo, prijavite se ili se registrirajte.
17.02.2025., 20:05
1878 Postova 1000 Tema 442 Članova
Najnoviji Član: medolino
php.hr  |  PHP & MySQL  |  PHP  |  Program Execution Functions i sinkronizacija « natrag naprijed »
 Str: [1]
Autor Tema: Program Execution Functions i sinkronizacija  (Posjeta: 2953 )
maXimus
Novi član
*
Offline Offline

Spol: Muški
Postova: 18


Profil
« : 11.11.2007., 15:47 »

Trebao bi napraviti stranicu preko koje bi korisnik uploadao datoteku. Tu datoteku treba obraditi nekim programom koji se nalazi na tom istom serveru (linux), dakle preko php pozvati program i predat mu parametre. To sam mislio napraviti korištenjem exec() funkcije.

Sad mene zanima što će se desit ako dođu 1000 korisnika i istovremeno pokrenu skriptu za pokretanje tog vanjskog programa. Da li će php za svakog od njih pokrenut poseban proces ili postoji neki mehanizam reda čekanja, dakle svi ostali zahtjevi čekaju dok prvi proces nebude gotov.

I općenito kako se rješavaju problemi sa pokretanjem programa preko php-a?
Evidentirano
ttc
Administrator
PHP Programer
*****
Offline Offline

Postova: 111



Profil WWW
« Odgovor #1 : 11.11.2007., 22:23 »

Tu ce OS dodjeljivati pravo koristenja resursa,
Naime, php nije nista drugo nego "program" na OS-u.
Inace exec() fcja je disableana na jedno 95% servera pa provvjeri da li ista funkcionira na tvom serveru.
Evidentirano
maXimus
Novi član
*
Offline Offline

Spol: Muški
Postova: 18


Profil
« Odgovor #2 : 13.11.2007., 01:58 »

što se tiče servera ja ga podešavam tako da to nije problem

ok OS pokušava svima pravedno dodijeliti korištenje resursa, no međutim pokušao sam lokalno (win XP) pokrenuti skriptu na dva različita browsera (opera i firefox) da bi simulirao dva korisnika. Skripta je pokretala ping naredbu i u task manager-u su se vidjela, da su pokrenuta, dva ping procesa. Dakle mogu zaključit da koliko korisnika pozove tu skriptu da će se toliko procesa pokrenut. Slična stvar bi bila i na linuxu (nisam isprobao).

Sad možda nisam dobro postavio pitanje zbog onog istovremenog pokretanja 1000 ljudi, naravno da će se morati pokrenut proces po proces, ali ono što ja želim je npr. ograničit na stvaranje do 3 procesa. Jer npr. ako na svom računalu pokrenemo više puta Nero progam za prženje, u task baru se vide ti procesi i svi oni troše memoriju (neki programi se nedaju više puta pokrenut istovremeno). Znači napraviti neki red zahtjeva, kad jedan od ta 3 procesa završi da se može pokrenuti novi.

A druga stvar koja me muči je kako ubiti pokrenuti program ako njegova obrada predugo traje, jer exec mi nedaje nikakav id pokrenutog procesa niti bilo kakvu vezu sa pokrenutim procesom.
« Zadnja izmjena: 13.11.2007., 02:00 maXimus » Evidentirano
 Str: [1]
php.hr  |  PHP & MySQL  |  PHP  |  Program Execution Functions i sinkronizacija « natrag naprijed »
    Skoči na: