Poslao: 10 Avg 2013 16:58
|
offline
- petkochb
- Novi MyCity građanin
- Pridružio: 26 Avg 2007
- Poruke: 13
|
Pozdrav svima. Radim jedan web sajt sa mysql bazom. Zamisljeno je da sve bude "uzivo", tj. da se na svakih 5 sekundi citaju podaci iz baze preko ajaxa. Sajt je slican nekom chat-u, pa je potrebno da prikazuje sve podatke u odredjenoj sobi. Ja sa ajax-om pozivam php fajl koji mi vraca sve podatke iz baze pomocu query-ja. Moje pitanje je, da li ce usporiti i opteretiti server i bazu veliki broj upita i koje je optimalno vreme pozivanja php fajla putem ajax-a, kao i da li treba uvek citati sve podatke ili treba citati samo nove pomocu OFFSET-a?
MySQL:
"SELECT * FROM mesage WHERE Ime = 'Bla bla' AND Pregledi = 0 ORDER BY DatumPoruke ASC"
Javascript (ajax):
function porukice() {
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("novaporuka").innerHTML=xmlhttp.responseText;
setTimeout('porukice()', 5000);
}
xmlhttp.open("POST","poruke.php?ime="+<?php echo $_GET['ime']?>,true);
xmlhttp.send();
}
Da napomenem da je u pitanju veliki broj upita ka bazi i veliki broj podataka u bazi.
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
|
Poslao: 10 Avg 2013 22:33
|
offline
- petkochb
- Novi MyCity građanin
- Pridružio: 26 Avg 2007
- Poruke: 13
|
Rastafarii, hvala na odvojenom vremenu. Ovo što ja pravim nije klasični čet već više nešto kao wall post na faceu ili neki forum, tako da tu neće poruke stizati svake sekunde. Slab sam sa javom. PHP, MySQL znam vrlo dobro, i malo java script-e, pa se sada ne bi upuštao u neka nova učenja, a i projekat je pri kraju, pa je sada kasno sve menjati. Da li po vama treba da povećam vreme provere (tako da bude manje upita ka bazi), i koje je vreme optimalno postaviti? Interesuje me da li ovaj kod što sam postavio po vama ima nekih rupa koje mogu da se zloupotrebe? Hvala svima unapred.
|
|
|
|
Poslao: 11 Avg 2013 10:27
|
offline
- Rastafarii
- Moderator foruma
- Pridružio: 22 Mar 2006
- Poruke: 3760
- Gde živiš: 127.0.0.1
|
Ovo sto sam ti ja predlozio nija Java, vec bas Javascript. Java i Javascript, osim 4 ista slova u nazivu, nemaju nista zajednicko.
U slucaju da koristis PHP + MySQL, nema potrebe da svaki put iscitavas sve poruke za odredjenog korisnika - koristi vreme poslednje iscitane poruke tako da prikazes samo nove. Ovo, naravno, vazi pod pretpostavkom da prilikom upisivanja nove poruke cuvas i vreme kad je napisana.
|
|
|
|
Poslao: 11 Avg 2013 11:55
|
offline
- petkochb
- Novi MyCity građanin
- Pridružio: 26 Avg 2007
- Poruke: 13
|
Rastafarii, hvala ti na predlogu. Predpostavio sam i ja da ne treba uvek ucitavati sve podatke iz baze, vec samo nove. Tu mi se javlja novi problem. Naime sada sam uradio da se u zahtev salje i timestamp poslednje poruke, ali mi se sada vracaju samo novi podaci, dok se svi stari obrisu. Kako da zadrzim stare poruke koje su vec bile prikazane, i da na njih dodajem samo nove. Evo i koda:
function porukice() {
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("poruke").innerHTML=xmlhttp.responseText;
setTimeout('porukice()', 5000);
}
xmlhttp.open("POST","poruke.php?ime="+<?php echo $_GET['ime']?>&vre=<?php echo $_GET['vreme']?>,true);
xmlhttp.send();
}
$Poruke = "SELECT * FROM mesage WHERE Ime = 'Bla bla' AND Pregledi = 0 AND DatumPoruke > 'vreme poslednje poruke' ORDER BY DatumPoruke ASC"
echo "<div id='poruke' align='center'>".$Poruke."</div>";
|
|
|
|
Poslao: 11 Avg 2013 13:23
|
offline
- Rastafarii
- Moderator foruma
- Pridružio: 22 Mar 2006
- Poruke: 3760
- Gde živiš: 127.0.0.1
|
Umesto
document.getElementById("poruke").innerHTML=xmlhttp.responseText;
stavi:
document.getElementById("poruke").innerHTML+=xmlhttp.responseText;
jedan jedini + ispred znaka jednako pravi razliku
|
|
|
|
|