[ zobi_cale @ 27.02.2004. 22:07 ] @
Imam potrebu da na neki nacin ogranicim vreme za izrsavanje query-ja. Tj. hteo bi ako moze nekako da se setuje u MySQL-u da podesim npr. da je maksimalno vreme za izvrsavanje query-ja npr: 5 minuta i ako za to vreme ne zavrsi da ubije proces. Da li je to moguce?

Hvala.
[ cvele @ 29.02.2004. 13:23 ] @
Nisam siguran da postoji podesavanje u mysql-u, ali mozes da probas da na pocetku scripta ispitas trajanje svih processa i ako je time>3000 ubijes ga.

$result = mysql_query("SHOW FULL PROCESSLIST");
while ($row=mysql_fetch_array($result)) {
$process_id=$row["Id"];
if ($row["Time"] > 3000) {
$sql="KILL $process_id";
mysql_query($sql);
}
}

http://www.mysql.com/doc/en/KILL.html


[ zobi_cale @ 29.02.2004. 19:47 ] @
Citat:
cvele:
Nisam siguran da postoji podesavanje u mysql-u, ali mozes da probas da na pocetku scripta ispitas trajanje svih processa i ako je time>3000 ubijes ga.



Dobra ideja, samo sto bi onda stavio da mi se ta scripta izvrsi na svakih npr: 1 minut pa da ubije proces koji dugo traje.

Nisam mozda bas detaljno izneo problem ali evo malo opsirniji opis:

Imam jednu web aplikaciju koju sam radio u PHP-u i koju koristi negde oko 100 korisnika i to sve fino radi. Medjutim ima korisnika koji pristupaju MySQL bazi preko trugih klijenata (npr: EXCEL, ACCESS, ima jedno programce u VB-u, itd.). Glavni problem je sto nekome nekad padne napamet i da da se izvuku neke statistike za poslednjih godinu i vise dana (u toj jednoj tabeli trenutno ima oko 1800000 redova sa 57 kolona). To i nije neki problem kada se desi pred kraj radnog vremena jer ostali su sve zavrsili pa nema problema ali to se desava i u toku radnog vremena pa mi je potrebno nekako da ako neko posalje takav upit koji ce na duze vreme smoriti masinu da ga jednostavno prekine.

Hvala u svakom slucaju, ako mi neko ne predlozi bolje resenje iskoristicu ovo.

Pozdrav.
[ _owl_ @ 29.02.2004. 21:41 ] @
Pa mozda bi te statistike mogao da prebacis na drugu masinu ili da rezultate tih upita kesiras (rezultat upita prebacis u posebnu tabelu -- simuliranje view-a)??
Elem nema elegantnog resenja u PHP-u za tvoj problem, meni na pamet pada samo jedno resenje:
Kada se pozove problematicni skript ti pre upita ka bazi pokrenes jos jedan u pozadini (preko fopen(), system() ili cega vec). Taj drugi skript treba da saceka 5 minuta i da proveri da li se i dalje izvrsava upit ka bazi (mada ovo spada u veoma "prljavo" resenje).