Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 2 odgovora
  • 1.979 pregleda

Najnovija ↓

Brzina, opterecenje i testiranje skripte 19.05.2009. u 10:05 · pre 212 meseci #1
Pozdrav svima,

evo ovako, sta mene muci, primera radi, dajem sledeci primer,

kreirao sam tabelu latestactivity i u fajlu members.php stavio sledeci kod

Code:
if(isset($_GET['userid']))
{
    $userid = $_GET['userid'];
    $query = mysql_query("SELECT * FROM useractivity WHERE userid = '$userid'") or die(mysql_error()); 
    while($user = mysql_fetch_array($query))
    {
        echo "".$user['activity']."<br>";
    }
}


sto znaci, da kada se ispise members.php?userid=4 da se dobiju svi redovi sa korisnickim ID-om 4, e sad, mene zanima sledece:
sta ako imam 20 000 registrovanih clanova, i svaki clan ima po nekih 50 poslednjih aktivnosti koje se nalaze u tabeli latestactivity, sto znaci 1 000 000 kolona u tabeli, po meni je to veoma mnogo, i zanima me ucitavanje, kakva bi bila brzina ucitavanja, isto primera radi, sta ako bi se u istom trenutku naslo 2 000 clanova na istoj stranici, kakvo bi bilo opterecenje ...
isto tako, ako moze neko da mi objasni o sledecem: video sam dosad jedno 5-10 sajtova koji kad im se pristupi izbaci MySql gresku na stranici da ne moze da se konektuje jer ima previse konekcija na MySql bazi, too many connections ...

u sustini me to najvise zanima, sta se dogadja kad je veci broj posetilaca na istoj stranici, sta se desava sa bazom, osim sto sporije ucitava, iako ne znam koliko ...

i jos jedno pitanje, da li postoji neki software ili neki sajt ili nesto trece, gde moze da se testira vasa php skripta da se vidi kako se ponasa pri vecem broju posetilaca ...

Hvala na pomoci i objasnjenjima
Re: Brzina, opterecenje i testiranje skripte 20.05.2009. u 09:28 · pre 212 meseci #2
Prvo, mani SELECT *, koristi SELECT ime_kolone1, ime_kolone2.

Sumnjam da ce se mysql buniti za milion redova, al' to ce vec neko da potvrdi ili opovrgne. Negde u mysqlovim podesavanjima (mysql.conf?) ima parametar koliko korisnika moze biti odjednom prikaceno na mysql server (default 100 cini mi se).

Za testiranje imas AB (Apache Bench), na Linuxima se instalira zajedno sa Apacheom, WAMP server isto sadrzi (ab.exe negde u bin folderu). Evo jedan linak za ab: http://www.petefreitag.com/item/689.cfm

Svako dobro :)
Re: Brzina, opterecenje i testiranje skripte 20.05.2009. u 09:40 · pre 212 meseci #3
Prvo, promenljivu userid ne smes da stavis u query string pre nego sto je prethodno "ne ocistis" sa mysql_real_escape_string ili prostim kastovanjem u integer, u zavisnosti od tipa podataka koji ti je potreban. Time sprecavas SQL Injection napad.

Dalje, verovatno te ne interesuju sve prethodne aktivnosti u svakom trenutku, pa ces u query ubaciti neki LIMIT x, 10. Tako ces rezultate prikazivati na vise stranica u grupama od po deset.

Brzina pretrage ove tabele, ako je userid polje primarni kljuc, ili indeksirano je minimalno i ne treba da te brine zato sto nema spajanja tabela ili slicnih komplikacija. Sta ako se pojavi n korisnika istovremeno, gde je n mnogo veliki broj? Pa ako vec imas veliku posecenost, a ti ces je na neki nacin pratiti. Logovaces u neku tabelu najcesce trazene stranice (mozda cak i ukupno vreme njihovog izvrsavanja), pratices kroz neki MySQL admin najsporije upite, kontrolisaces opterecenje procesora i RAM-a servera. Primetices vec kad pocnu da nestaju resursi. Uglavnom se ta nagla velika opterecenja ne javljaju bas nenajavljena.

Niko ne moze da ti kaze koliko ce ti se usporiti pretraga baze. To mnogo zavisi od tvoje masine, podesavanja servera, toga koliko si kvalitetno napisao SQL upite, projektovao bazu. Mozes samo da pratis ponasanje.

E sad "too many connections" zavisi od podesavanja RDBMS-a (MySQL-a) i nema veze s PHP-om. Isto mozes da ga pratis kroz neke od admin alata, pa da dostelujes po potrebi.
Potpis
Pera električar 0637129710, BG, preporučujem.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme