Pereiti prie turinio

Dėl PHP+MySQL optimizavimo


Rekomenduojami pranešimai

Sveiki,

Taigi turiu keletą senų php scriptų kuriuos reikia optimizuoti ir turiu dėl šito reikalo porą klausimų:

1. Ar yra realus skirtumas serverio apkrovai kai funkcijos naudojamos šitaip:

<?
echo time();
echo time()
echo time();
?>

Ar taip:

<?
$time = time()
echo $time;
echo $time
echo $time;
?>

2. Ar įmanoma su vienu mysql_query updatint, ištrinti eilutes iš skirtingų duomenų bazių, taip kaip su eilutės įterpimu?

mysql_query("INSERT INTO `lenta` VALUES ('','1'), VALUES ('','1'), VALUES ('','1')")

Esu susigooglines, jog reikia po komandos ; naudot, bet net pavyzdžius naudojant gaunu mysql klaidą.

3. Kaip skaičiuojasi tie PHP procesai, viena php komandą, tarkim time() - tai jau 1 PHP procesas?

 

Ačiū už atsakymus ;)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Galiu, klysti, bet as taip manau... :)

 

1. 2 variantas (geriau priskirti kintamajam ir ji naudoti, negu kiekviena syki kviesti vis ta pacia funkcija)

 

2. Jai gr supratau:

mysql_query("UPDATE lenta SET kaskas=1, kitas=1, darkitas=1")

 

3. Su procesais nlb gaudaus... :)

Redagavo 3peris
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Galiu, klysti, bet as taip manau... :)

 

1. 2 variantas (geriau priskirti kintamajam ir ji naudoti, negu kiekviena syki kviesti vis ta pacia funkcija)

 

2. Jai gr supratau:

mysql_query("UPDATE lenta SET kaskas=1, kitas=1, darkitas=1")

 

3. Su procesais nlb gaudaus... :)

 

Dėl 2 negerai supratai, reikia kažko lyg taip :D

mysql_query("UPDATE lenta SET kaskas=1, kitas=1, darkitas=1; UPDATE lenta SET kaskas=1, kitas=1, darkitas=1; UPDATE lenta SET kaskas=1, kitas=1, darkitas=1")

na, kad nereiktų daug querių.

 

Ir dar vienas klaisimėlis, toks function naudojimas pagreitina/palėtina puslapį nors kiek ar čia tiesiog dėl patogumo ir trumpesnio kodo?

<?
function name($user_id=0)
{
	// Čia daug kkių nors php f-jų
	return $name;
}
echo name(12);
?>

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Ir dar vienas klaisimėlis, toks function naudojimas pagreitina/palėtina puslapį nors kiek ar čia tiesiog dėl patogumo ir trumpesnio kodo?

Funkcija nebus greičiau, gal net truputį lėčiau, BET tai yra daug geriau DRY, kodo pernaudojamumo prasme. Yra toks posakis „Premature optimization sucks“. Neverta leistis į tokias mikro-optimizacijas kol viskas veikia gerai ir yra ką rimtesnio optimizuoti.

 

Sveiki,

Taigi turiu keletą senų php scriptų kuriuos reikia optimizuoti ir turiu dėl šito reikalo porą klausimų:

1. Ar yra realus skirtumas serverio apkrovai kai funkcijos naudojamos šitaip:

<?
echo time();
echo time()
echo time();
?>

Ar taip:

<?
$time = time()
echo $time;
echo $time
echo $time;
?>

2. Ar įmanoma su vienu mysql_query updatint, ištrinti eilutes iš skirtingų duomenų bazių, taip kaip su eilutės įterpimu?

mysql_query("INSERT INTO `lenta` VALUES ('','1'), VALUES ('','1'), VALUES ('','1')")

Esu susigooglines, jog reikia po komandos ; naudot, bet net pavyzdžius naudojant gaunu mysql klaidą.

3. Kaip skaičiuojasi tie PHP procesai, viena php komandą, tarkim time() - tai jau 1 PHP procesas?

 

Ačiū už atsakymus ;)

 

1. Taip. Jei funkcija nieko per daug nedaro – nepajusi, bet šiaip jau pirmame atvejy kvieti funkciją tris kartus - jei ji užtruktų kokias 10ms, tai trys kartai jau būtų 30 ms.

Antrame pavyzdy gauni iš funkcijos rezultatą, ją iškviesdamas vieną kartą, ir jį pernaudoji – tas nebekainuoja tiek daug.

 

2. Net iš atskirų DB? Nesu tikras, bet kokiu atveju – neverta jaudintis dėl tokio dalyko. Tik nenaudok mysql_query ir draugų.

 

3. Ne. Priklauso nuo serverio, tiesiog stovi keli PHP procesai, vienas vienu metu apdoroja vieną requestą.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

2. Ar įmanoma su vienu mysql_query updatint, ištrinti eilutes iš skirtingų duomenų bazių, taip kaip su eilutės įterpimu?

mysql_query("INSERT INTO `lenta` VALUES ('','1'), VALUES ('','1'), VALUES ('','1')")

http://php.net/manual/en/mysqli.multi-query.php

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Funkcija nebus greičiau, gal net truputį lėčiau, BET tai yra daug geriau DRY, kodo pernaudojamumo prasme. Yra toks posakis „Premature optimization sucks“. Neverta leistis į tokias mikro-optimizacijas kol viskas veikia gerai ir yra ką rimtesnio optimizuoti.

 

Jo, jo. Vienoje JS prezentacijoje gerai buvo zmogelis pazymejes, kad dabar pradeda optimizuoti koda dar pilnai jo neparasius. )))

Nuoroda į pranešimą
Dalintis kituose puslapiuose

1. Nevisada vienas didelis queris geriau, nei keleta mazesniu uzklausu;

2. Jei duomenis suristi kokiu nors ID, patariu naudoti trigerius (jeigu atliekant pakeitima, reikia atlikti ji ir kitur);

3. Patarimas: paziurek ar kiekviena uzklausa isnaudoja savo turimus indeksus;

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Kas liecia php optimizavima, taigi susintaliuok i php xdebug, ir padaryk profilinima , tada su webgrid issianalizuosi kas kiek itakoja.

 

Insistaliuoti į vpsą nelabai išeina man jo :D

 

Kaip sakė Marius pirma pažiūrėk ar išvis reikia optimizuoti

 

Kad optimizuot reikia tai tikrai, nes 40 online pasiekia ir jau skaityk nepasiekiamas puslapis, reikia pagrinde mysql'ą susitvarkyt, nes yra vietų kur po 8 querius per kartą leidžia, kai reik kelias lenteles iškart updatint, paimt duomenis ir trint dar ką nors.

 

Prie to pačio, nevelnio apie kompus ir serverius nenusimanau, tik naudotis jais moku :D Žinau tik apie hdd ir ramus, bet ko reikia, kad apache kuo daugiau online žmonių išlaikytų be lagų?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prie to pačio, nevelnio apie kompus ir serverius nenusimanau, tik naudotis jais moku :D Žinau tik apie hdd ir ramus, bet ko reikia, kad apache kuo daugiau online žmonių išlaikytų be lagų?

Pradėti domėtis kompais ir serveriais pirmiausia. O tada – analizuok, profilink ir t.t. Nieks neišburs iš tirščių, nematydamas tavo aplikacijos, serverio ir t.t.. :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Kartais sumažinus 1000 užklausų nelabai pasijunta o kartais php scriptą šiek tiek pakoregavus keliom sekundes greičiau susisuka. 8 užklausos yra mažai, bet jos gali užlockinti table ir kitos užklausos lauks kol update pasibaigs

Redagavo welkam
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...