Pereiti prie turinio

Rekomenduojami pranešimai

Ką įmanoma (proto ribose) patarčiau perdaryt į txt, o bendrą informaciją, kuri nesikeičia dažnai, į config.php. Žinoma, jei nieko neįmanoma supaprastint, tai kas belieka tai mysql query'us optimizuot.

I txt perdaryti kazka? Kodel? :)

Matau tik viena galima preteksta tokiam perdarymui - jei serveris labai riboja MySql uzklausu skaiciu. Bet visais kitais atzvilgiai MySql tikrai yra geriau uz txt - greiciau, patogiau, paprasciau. :)

Didzioji dalis (>90%) dabartiniu TVS'u yra paremta SQL duomenu bazemis.

Bet uzklausas tai aisku, kad reiktu optimizuoti. Pageidautina, kad cikluose nebutu uzklausu. Vietoje to geriau sudaryti viena didesne uzklausa su Join ar Union. :D

Nuoroda į pranešimą
Dalintis kituose puslapiuose
Matau tik viena galima preteksta tokiam perdarymui - jei serveris labai riboja MySql uzklausu skaiciu

 

O tai iš kur man žinot ar jis riboja MYSQL užklausų skaičių ar ne?

 

Bet uzklausas tai aisku, kad reiktu optimizuoti. Pageidautina, kad cikluose nebutu uzklausu. Vietoje to geriau sudaryti viena didesne uzklausa su Join ar Union.

 

Manau kolkas išsiversiu ir be visokių optimizavimų. Kolkas viską paprastai padarysiu, vėliau vis tobulinsiu. Ar kaip patariat ?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

O tai iš kur man žinot ar jis riboja MYSQL užklausų skaičių ar ne?

 

 

 

Manau kolkas išsiversiu ir be visokių optimizavimų. Kolkas viską paprastai padarysiu, vėliau vis tobulinsiu. Ar kaip patariat ?

Parasyk i support'a ir paklausk. Bet kol nesiskundzia, tai gal nieko baisaus. :)

Na priklauso nuo to, kaip ten pas tave parasyta. Jei viskas proto ribose, tai gali ir neoptimizuoti labai, kol nera didelio lankomumo ir pakankamai ziniu. Bet bent jau proto ribose tai viskas turetu buti. :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Bet visais kitais atzvilgiai MySql tikrai yra geriau uz txt - greiciau, patogiau, paprasciau. :)

 

Nesi visiskai teisus. Mysql yra geriau delto, jog daug zmoniu gali vienu metu dirbti su tais paciais duomenimis. Cia yra pagrindinis pliusas. Zinoma tuo paciu duomenis lengviau atnaujinami ir panasiai.

 

Del greicio daznai is failo nuskaityti duomenis yra kur kas greiciau negu is mysql. Delto daugelis tavo minimu TVS`u naudoja uzklausu kesavima, t.y. uzklausos rezultatus iraso i faila, ir sekanti karta vykdant uzklausa ima is failo o ne is DB..

Zinoma toki kesavima tinkamai padaryti yra gan daug vargo. Neviska galima kesuoti, reikia apgalvoti kaip daznai kesa pravalyti ir taip toliau .

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nesi visiskai teisus. Mysql yra geriau delto, jog daug zmoniu gali vienu metu dirbti su tais paciais duomenimis. Cia yra pagrindinis pliusas. Zinoma tuo paciu duomenis lengviau atnaujinami ir panasiai.

 

Del greicio daznai is failo nuskaityti duomenis yra kur kas greiciau negu is mysql. Delto daugelis tavo minimu TVS`u naudoja uzklausu kesavima, t.y. uzklausos rezultatus iraso i faila, ir sekanti karta vykdant uzklausa ima is failo o ne is DB..

Zinoma toki kesavima tinkamai padaryti yra gan daug vargo. Neviska galima kesuoti, reikia apgalvoti kaip daznai kesa pravalyti ir taip toliau .

Man rodos kad TVS'ai kesuoja ne uzklausas, o jau apdorota source, kad greitai atejus kitam lankytojui nebereiketu tu uzklausu vel apdoroti. Bent jau kaikurie tai tikrai taip daro, o kiti gal ir MySql rezultatus kesuoja. Bet, as manyciau, kad tai daro ne del greicio, o del mano mineto MySql uzklausu ribojimo kaikuriuose hostinguose. :)

Man visada atrode, kad MySql greicio atzvilgiu pranasesne uz txt. Bet gal ir klystu...

Nuoroda į pranešimą
Dalintis kituose puslapiuose
Del greicio daznai is failo nuskaityti duomenis yra kur kas greiciau negu is mysql. Delto daugelis tavo minimu TVS`u naudoja uzklausu kesavima, t.y. uzklausos rezultatus iraso i faila, ir sekanti karta vykdant uzklausa ima is failo o ne is DB..Zinoma toki kesavima tinkamai padaryti yra gan daug vargo. Neviska galima kesuoti, reikia apgalvoti kaip daznai kesa pravalyti ir taip toliau .

 

Na kolkas manau pasirinksiu MYSQL, neplanuoju jau labai didelio lankytojų srauto.

 

Dabar paklausiu dar vieno dalyko.

Noriu padaryti RATING scriptą, kad žmonės galėtų įvartinti tarkim kokį straipsnį.

 

Kaip viską darau: Yra forma, pasirinkti balsavimui (nuo 1 iki 5). Padarau, kad pabalsavus, rezultatas būtų patalpintas į duomenų bazę. (na iš dalies viską padarau ko man reikia). Tačiau dabar nesugalvoju kaip padaryti, kad žmogus negalėtų dar kartą balsuoti. Mėginau daryti su IP (kad tikrintų balsavusio IP).

 

Dariau taip: Kiekvienas straipsnis turi atskirą ID, todėl galvoju padaryti taip: kai žmogus prabalsuoja, tada jo IP įrašomas į duomenų bazę. O prieš balsavimą, patikrintų ar jo IP nesutampa iš kitų IP'ų, kurie buvo įrašyti į duomėnų bazę, prie atitinkamo ID.

 

 

Ar geriau naudot kokius COOKIES? (bet dar su jais nesu dirbęs).

 

Ps. Perskaičiau apie SQL INJECTION. Dabar galėsiu mėginti apsaugas nuo jos, nes nebuvau įsivaizdavęs, kad taip lengva nuhakinti visą duomenų bazę

Redagavo ifonly
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Man rodos kad TVS'ai kesuoja ne uzklausas, o jau apdorota source, kad greitai atejus kitam lankytojui nebereiketu tu uzklausu vel apdoroti. Bent jau kaikurie tai tikrai taip daro, o kiti gal ir MySql rezultatus kesuoja. Bet, as manyciau, kad tai daro ne del greicio, o del mano mineto MySql uzklausu ribojimo kaikuriuose hostinguose. :)

Man visada atrode, kad MySql greicio atzvilgiu pranasesne uz txt. Bet gal ir klystu...

 

 

Kesaviams yra ivairiu skirtingu lygiu: Viso puslapio, puslapio dalies, uzklausu... Kesuojama yra ivairiai rasoma i failus, laikoma atmintyje(RAME) .. ir t.t.

 

TVS`u yra daug ir jos skirtingos.. Ju galimybes gali butu smarkiai prapleciamos.. kesavimas yra vienas svarbiausiu dalyku dideliose projektuose.. ir gali but taikomi is karto daug dalyku.. t.y. kesuojama viskas kas tik imanoma (ne kiekvienas puslapis gali buti kesuojamas del dinaminiu savybiu lygiai taip pat, kaip ir nekiekviena uzklausa...)

 

Konkreciai del greicio, tai daug kas priklauso nuo uzklausos, Tarkim turime eparduotuve, kurioje yra 10000 prekiu ir vykdoma tekstine paieska pagal koki nors lauka (kuris nera indeksas). Tokia uzklausa truktu labai ilgai...

 

 

Del "uzklausu skaicio ribojimo", kaip manai, kodel jos yra ribojamos ?

Todel, kad stipriai didejant ju kiekiui, laikas sugaistamas kiekvienai uzklausai dideja dar stipriau... ir net pacios paprasciausios uzklausos veikia labai letai

 

 

Ar geriau naudot kokius COOKIES? (bet dar su jais nesu dirbęs).

 

vienareiksmio atsakimo lengvai nera:

Cookius galima lengvai istrinti,

isivaizduok visas bendrabutis turi viena IP, vadinasi kitas zmogus is jo jau negales balsuoti...

 

Taigi kiekvienu konkreciu atveju tenka spresti kas geriau: patikimumas (tada galima naudoti ir ta ir ta buda is karto)

ar didesnis balsu kiekis

Redagavo rufas
Nuoroda į pranešimą
Dalintis kituose puslapiuose
Taigi kiekvienu konkreciu atveju tenka spresti kas geriau: patikimumas (tada galima naudoti ir ta ir ta buda is karto)ar didesnis balsu kiekis

 

Na kolkas vienam iš kuriamų projektų nereikia balsų patikimumo (nes tie balsai nieko neliame beveik).

 

O va kitam projektui, reikės didelio patikimumo, tai tada gal ir mėginsiu daryt ką nors rimčiau su tais IP ir COOKIES

Nuoroda į pranešimą
Dalintis kituose puslapiuose

index.php

 

<a href="lol.php?saule=sviecia">Spausk cia</a>

 

 

lol.php

 

<?php
if ($saule == sviecia) {
echo "Tinka";
} else {
echo "Netinka";
}
?>

 

Noriu, kad paspaudus tą "SPAUSK CIA" nuorodą, nueitų į lol.php ir parašytų "TINKA". Bet jeigu patenki į tą psl nepaspaudus tos nuorodos, kad parašytų "NETINKA"

 

 

Pirmą kartą su tokiu dalyku susidūriau, gal galit kas padėt?

Pasiieškočiau per google, bet nežinau kokį keyword rašyt paieškos laukelyje kad raščiau tai ko man reikia

 

Ps. Aš nelabai suprantu tuos po href kur eina ?saule=sviecia.

Redagavo ifonly
Nuoroda į pranešimą
Dalintis kituose puslapiuose

index.php

 

<a href="lol.php?saule=sviecia">Spausk cia</a>

lol.php

 

<?php
if ($saule == sviecia) {
echo "Tinka";
} else {
echo "Netinka";
}
?>

 

Noriu, kad paspaudus tą "SPAUSK CIA" nuorodą, nueitų į lol.php ir parašytų "TINKA". Bet jeigu patenki į tą psl nepaspaudus tos nuorodos, kad parašytų "NETINKA"

Pirmą kartą su tokiu dalyku susidūriau, gal galit kas padėt?

Pasiieškočiau per google, bet nežinau kokį keyword rašyt paieškos laukelyje kad raščiau tai ko man reikia

 

Ps. Aš nelabai suprantu tuos po href kur eina ?saule=sviecia.

Tavo pasiulytas variantas veiktu, jei butu ijungtas RegisterGlobals. Bet saugumo sumetimais jis dazniausiai buna isjungtas, tad reikia daryti taip, kaip nurode Hyip-club.

O tie kur eina po ? yra tavo kintamieji ir ju reiksmes.

Pvz: index.php?pirmas=namas&antras=22&saule=sviecia

Perduodami trys kintamieji:

$_GET['pirmas'] // grazina "namas"

$_GET['antras'] // grazina 22

$_GET['saule'] // grazina "sviecia"

Siaip tai nesudetinga cia. :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose
if ($_GET['saule']=="sviecia") echo "Tinka"; else echo "Netinka";

 

Tavo pasiulytas variantas veiktu, jei butu ijungtas RegisterGlobals. Bet saugumo sumetimais jis dazniausiai buna isjungtas, tad reikia daryti taip, kaip nurode Hyip-club.O tie kur eina po ? yra tavo kintamieji ir ju reiksmes.Pvz: index.php?pirmas=namas&antras=22&saule=svieciaPerduodami trys kintamieji:$_GET['pirmas'] // grazina "namas"$_GET['antras'] // grazina 22$_GET['saule'] // grazina "sviecia"Siaip tai nesudetinga cia.

 

Dėkui abiems. Na čia tikrai nesudėtinga, tačiau visai buvau užmiršęs tą $_GET (dar jo niekada nebuvau naudojąs).

 

Kažkuriam tutoriale buvo parašyta taip kaip aš rašiau, todėl man ir suklaidino ..

Nuoroda į pranešimą
Dalintis kituose puslapiuose

if ($_GET['saule']=="sviecia") echo "Tinka"; else echo "Netinka";

 

Sis sprendimas nera visiskai geras.

Jeigu yra nustatyta, kad rodytu klaidas (kas ypac mokantis ir siaip dirbant lokaliai yra grieztai rekomenduojama) kartais turetu ismesti klaidos pranesima ('notice' kad $_GET['saule'] neegzistuoja)

 

Taigi reiketu daryti taip:

if (isset($_GET['saule']) && $_GET['saule']=="sviecia") echo ....

Siuo atveju dar patikriname ar toks kintamasis ($_GET['saule']) egzistuoja.

Redagavo rufas
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Sis sprendimas nera visiskai geras.

Jeigu yra nustatyta, kad rodytu klaidas (kas ypac mokantis ir siaip dirbant lokaliai yra grieztai rekomenduojama) kartais turetu ismesti klaidos pranesima ('notice' kad $_GET['saule'] neegzistuoja)

 

Taigi reiketu daryti taip:

if (isset($_GET['saule']) && $_GET['saule']=="sviecia") echo ....

Siuo atveju dar patikriname ar toks kintamasis ($_GET['saule']) egzistuoja.

Arba, kad trumpiau rasyti, galima naudoti:

if (@$_GET['saule']=="sviecia"){...}

Klaida nebus rodoma.

Bet cia tik uzrasymui trumpesnis budas, taciau jis naudoja daugiau serverio resursu, nei rufo nurodytas. O norint dar siek tiek resursu sutaipyti reiktu naudoti viengubas kabutes vietoje dvigubu. :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Arba, kad trumpiau rasyti, galima naudoti:

if (@$_GET['saule']=="sviecia"){...}

Klaida nebus rodoma.

Bet cia tik uzrasymui trumpesnis budas, taciau jis naudoja daugiau serverio resursu, nei rufo nurodytas. O norint dar siek tiek resursu sutaipyti reiktu naudoti viengubas kabutes vietoje dvigubu. :D

 

kad butu visai tiksliai, tai dar truputeli pakomentuosiu :) Tikiuosi T-Mix nesupyks :D

1) del kabuciu ir resursu. Siuo atveju, greicio praktiskai visiskai neitakuoja, yra gan nesudetingi testukai kuriais tai pamatytum. Kad tokiu budu galima sutaupyti resursu yra vienas is "PHP mitu" (nebent yra milziniski ju kiekiai, bet ir tokiu atveju ne visada)

 

2) del @ resursu isnaudojimu tu esi teisus, bet tai tikrai nera sprendimas. (@ operatoriaus apskritai reiketu niekada nevartoti)

Ar zinai kaip veikia @ operatorius ir kodel jis isnauduoja daug resursu ?

Viskas vyksta mazdaug taip: kai sutinkamas @ operatorius, tuomet error reportingas yra isjungiamas, t.y vykdoma error_reporting(..); Veliau vykdomas kodo gabaliukas siuo atveju $_GET['saule']. Tuomet vel ijungiamas error_reportingas, toks koks yra visoje aplikacijoje.

Taigi tokiu budu klaidos nepasaliname, tiesiog jos nerodome.

 

p.s. nepamenu tiksliai, kaip @ vadinamas.. galbut tai nera, kaip as minejau: "@ operatorius"

Nuoroda į pranešimą
Dalintis kituose puslapiuose

kad butu visai tiksliai, tai dar truputeli pakomentuosiu :) Tikiuosi T-Mix nesupyks :D

1) del kabuciu ir resursu. Siuo atveju, greicio praktiskai visiskai neitakuoja, yra gan nesudetingi testukai kuriais tai pamatytum. Kad tokiu budu galima sutaupyti resursu yra vienas is "PHP mitu" (nebent yra milziniski ju kiekiai, bet ir tokiu atveju ne visada)

 

2) del @ resursu isnaudojimu tu esi teisus, bet tai tikrai nera sprendimas. (@ operatoriaus apskritai reiketu niekada nevartoti)

Ar zinai kaip veikia @ operatorius ir kodel jis isnauduoja daug resursu ?

Viskas vyksta mazdaug taip: kai sutinkamas @ operatorius, tuomet error reportingas yra isjungiamas, t.y vykdoma error_reporting(..); Veliau vykdomas kodo gabaliukas siuo atveju $_GET['saule']. Tuomet vel ijungiamas error_reportingas, toks koks yra visoje aplikacijoje.

Taigi tokiu budu klaidos nepasaliname, tiesiog jos nerodome.

 

p.s. nepamenu tiksliai, kaip @ vadinamas.. galbut tai nera, kaip as minejau: "@ operatorius"

1) Na ne visai sutikciau. Kabutes nors ir menkai, bet vis vien itakoja kodo vykdymo sparta. Juk jei vedi dvigubas kabutes, tai php, pries lygindama kaire puse su tekstu dvigubose kabutese turi patikrinti ar ten nera kintamuju ir kitokiu zenklu, kaip \n. Viengubu kabuciu atveju siu tikrinimu isvengiama ir tikrai sutaupoma bent siek tiek resursu. :D

Nors, aisku, prie siuolaikiniu procesoriu greiciu tas sutaupymas gal ir menkai jauciamas.

2) Visiskai su tavimi sutinku. Juk ir ivardinau si buda kaip trumpiausia, o ne geriausia ar optimaliausia. :D

 

Anyway mes cia per daug nuklydom i lankas, visiskai supainiosim zmones. :D

Nuoroda į pranešimą
Dalintis kituose puslapiuose
kartais tokie supainiojimai yra visai sveika

 

Na man tikrai naudinga, kai dar jūs čia padiskutuojat :) Ateitį gal toki ir pravers dalykai.

 

Dabar dar vieno dalyko nesugalvoju.

 

Yra

<textarea></textarea>

 

Tarkim į textarea įrašau kokį nors tekstą pvz:

 

Isvirtusios zarnos pasruve kraujhai
Nutrauktos galunes, kruvini veidai,
Ir myliu as tave labai labai.

 

Tekstą įrašo į duomenų bazę. Toliau noriu, kad tekstą ištrauktų iš duomenų bazės ir parašytų puslapyje. Tačiau tada tekstas atrodo taip:

 

Isvirtusios zarnos pasruve kraujhai Nutrauktos galunes, kruvini veidai,Ir myliu as tave labai labai.

 

Noriu padaryti taip, kad kaip įrašyta į textarea, taip ir būtų atvaizduota puslapyje? Suprantat ko noriu ? :D

 

Žinoma galiu tiesiog kiekvienos eilutes gale prirašyt <br />, tačiau aš noriu, kad tai būtų automatiškai padaryta

Redagavo ifonly
Nuoroda į pranešimą
Dalintis kituose puslapiuose

if (!isset($_POST['submit'])) {

?>


<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post"> 
<?php
$result = mysql_query("SELECT * FROM juokelis WHERE busena='Nepat'") or die(mysql_error());
	while ($row = mysql_fetch_array($result)) {
	echo "<input type='checkbox' name='patvirtinti' value='".$row['id']."' />     ";
	echo "Kategorija: ".$row['kategorija'];
	echo "     Atsiuntė: ".$row['atsiunte'];
	echo "<p />";
	echo $row['anekdotas'];
	echo "<br /><hr />";
	}	
echo "<center><input type='submit' name='submit' value='Patvirtinti' /></center>";	
echo "</form>";


} else {
$aid = $_POST['patvirtinti'];
$res = mysql_query("UPDATE juokelis SET busena='Pat' WHERE id='$aid'") or die(mysql_error());
echo "Anekdotas sėkmingai patvirtintas!";
} else {
.....

 

Kodas veikia, tačiau ne taip kaip aš noriu.

Pats kodas turi daryti va ką: Pažymimi anekdotai (CHECKBOX), paspaudus Submit mygtuką, visų pažymėtų anekdotų mysql updatina iš Nepat į Pat. Man dabar updatina tik vieno pažymėto anekdotų, o kitų ne. Tai turi po vieną žymėt. Gal žinot kaip išprest šią problemą?

 

Ten tiesiog $aid = $_POST['patvirtinti']; tik vieną kartą suveikia. O tų 'patvirtinti' yra daug. Kas nors suprato mane :) ?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Naudok html'e visus name="patvirtinti[]" (vardo pabaigoj pridek []). Tada automatiskai php juos sukraus i array. Ir tada su foreach($_POST['patvirtinti'] as $aid){

// Cia mysql query ta . . .

}

 

Arba dar kaip nors i viena uzklausa sutalpinti butu galima, kad butu optimaliau, bet juk sitos uzklausos vistiek nebus vykdomos kiekvienu atvertimu, tai dideles itakos labai gal nedarys. :)

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ą...