Pagina 1 din 1

Refresh

Scris: Joi Apr 19, 2012 12:29 pm
de Double_Web
Salut! Am cautat pe net problema mea, dar nu prea am gasit, iar ce am gasit este prea complex pentru un incepator ca mine in AJAX.
Problema: am o pagina in php si vreau doar o particica sa se refresh-eze o data la o secunda.
Scriptul/Fisierul care vreau sa se refresh-eze este:

Cod: Selectaţi tot

<?php
    include "user_configs.php";
   echo 'Nickname: '.$nickname;
   
   //am afisat nickname-ul, acum afisam viata
   $viata = ''; //am definit variabila pentru viata
   // Se face conectarea la serverul MySQL si selectarea bazei de date
       $conn = mysql_connect("mysql16.000webhost.com", "a4623475_ss", "123!@#qwe") or
          die("Nu m-am putut conecta la serverul MySQL");
       $selectdb = mysql_select_db('a4623475_ss');
   if(get_magic_quotes_gpc()) { $viata = stripslashes($viata); }
   $viata = mysql_real_escape_string($viata);
   $sql2 = "SELECT viata FROM `player` WHERE `username` LIKE '%$username%'";
   $resql2 = mysql_query($sql2, $conn) or trigger_error(E_USER_ERROR);
       if (mysql_num_rows($resql2) == 0) { echo 'EROARE !!'; }
      else {
          while ($rand2 = mysql_fetch_assoc($resql2)) {
             // Elimina caracterele "\" care au fost adaugate de "mysql_real_escape_string()"
             $col2 = stripslashes($rand2['viata']);
            echo '<p>Viata: '.$col2;
         }
       }
   $max_viata = ''; //am definit variabila pentru MAX viata
   if(get_magic_quotes_gpc()) { $max_viata = stripslashes($max_viata); }
   $max_viata = mysql_real_escape_string($max_viata);
   $sql3 = "SELECT max_viata FROM `player` WHERE `username` LIKE '%$username%'";
   $resql3 = mysql_query($sql3, $conn) or trigger_error(E_USER_ERROR);
       if (mysql_num_rows($resql3) == 0) { echo 'EROARE !!'; }
      else {
          while ($rand3 = mysql_fetch_assoc($resql3)) {
             // Elimina caracterele "\" care au fost adaugate de "mysql_real_escape_string()"
             $col3 = stripslashes($rand3['max_viata']);
            echo ' / '.$col3;
         }
       }
?>


Nu ma pricep in ajax asa ca am apelat la voi.
Multumes anticipat !

Scris: Joi Apr 19, 2012 12:36 pm
de Birkoff
poti baga scriptul in iframe si sa ii dai refres doar la acel iframe

Scris: Joi Apr 19, 2012 1:28 pm
de Double_Web
si daca nu as vrea sa-l bag intr-un iframe... ma poate ajuta cineva?
Apropo: tot codul acela de mai sus, reprezinta game-right.php .

Scris: Joi Apr 19, 2012 2:04 pm
de EoKlaus
Te ajuta acest exemplu:

Cod: Selectaţi tot


<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"> </script>
<script type="text/javascript">

$(document).ready(function(){

   $('#refresh').click(function(){
   
      $('#load').load('pagina.php');
   
   });

});

</script>
</head>
<body>

<button id="refresh">Refresh</button>

<br>
<br>
<div id="load"><?php include("pagina.php"); ?></div>

</body>
</html>


?> Unde vezi pagina.php editezi pagina care e inclusa in fisierul tau.

Scris: Joi Apr 19, 2012 2:50 pm
de Double_Web
EoKlaus, mersi DAR codul pe care mi l-ai dat este semi-manual :).
Vreau sa se refresh-eze AUTOMAT la 1sec / 1msec.
Alte idei ?

Scris: Joi Apr 19, 2012 2:57 pm
de EoKlaus

Cod: Selectaţi tot


<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"> </script>
<script type="text/javascript">

$(document).ready(function(){
   setInterval(function(){
      $("#load").load('pagina.php');
   }, 10000);
});

</script>
</head>
<body>


<div id="load"><?php include("pagina.php"); ?></div>

</body>
</html>


Acum?

Scris: Joi Apr 19, 2012 2:57 pm
de Birkoff
esti constient cat trafic aiurea se va face pe site daca dai refres la 1 secunda? probabil ca in cateva zile se vor autosesiza cei de unde ai hostul si iti vor limita traficul...

Scris: Joi Apr 19, 2012 3:19 pm
de Double_Web
1. Mersi EoKlaus pentru script, merge PERFECTO !!
2. Birkoff, refresh-ul nu se da la toata pagina, ci la un sfert din ea.

Scris: Joi Apr 19, 2012 3:58 pm
de Birkoff
Double_Web scrie:2. Birkoff, refresh-ul nu se da la toata pagina, ci la un sfert din ea.


ok facem un calcul simplu

sa zicem ca pagina cu scriptul la care dai refres are 10 kb
sa zicem ca ai pe ora 100 vizitatori care acceseaza site-ul (si automat si bucata cu refres-ul)

10 kb x 60 secunde = 600 kb pe minut
600 kb x 60 minute = 36.000 kb pe ora
100 vizitatori pe ora x 36.000 kb = 3.600.000 kb pe ora pentru 100 vizitatori (aproximativ 3 gb pe ora)
deci calculeaza in cat timp ti se va termina traficul (cum majoritatea hosturilor au limita de trafic lunar)

iti spun astea pentru ca am avut si eu probleme similare cu un chat jquery... dupa 3 zile mi se terminase traficul lunar...

Scris: Joi Apr 19, 2012 4:09 pm
de Double_Web
1. pai daca e cum zici tu... sunt semi fericit ca pagina mea are 5kb..
2. cum as putea sa fac altfel...? chenarul meu are de afisat cateva informatii (in real-time). Cm sa fac altfel..... ?

Scris: Joi Apr 19, 2012 4:33 pm
de quadmachine
Din ce vad acolo incerci sa faci un joc nu,pentru ce sa dai refresh automat la o pagina care iti afiseaza
min HP/max HP? Si ca sa mai scurtezi din cod,am o sugestie pentru tine faci 2 tabele stats si user_stats
in stats


Cod: Selectaţi tot

id - display_name - short_name
1     Maximum HP - maxhp
2    MinimumHP   -minhp


tabela user_stats

Cod: Selectaţi tot

id - user_id - stat_id - value
1    1            2           1000       


Apoi o functie prin care preiei aceste valori pentru userul logat.

Cod: Selectaţi tot

function getValue($statname,$userid){
   $query = sprintf("SELECT value FROM user_stats WHERE stat_id = (SELECT id FROM stats WHERE display_name = '%s' OR short_name = '%s') AND user_id = '%s'",
      mysql_real_escape_string($statname),
      mysql_real_escape_string($statname),
      mysql_real_escape_string($userid));
   $result = mysql_query($query) or die(mysql_error());
   list($value) = mysql_fetch_row($result);
   return $value;      
}



Si in pagina getValue('minhp',$_SESSION['userid']); ,getValue('maxhp',$_SESSION['userid']); [/quote]

Scris: Joi Apr 19, 2012 4:35 pm
de Birkoff
pai daca ne dai mai multe detalii ce vrei sa faci poate te ghidam in altfel...

1) ai putea regenera bucata respectiva la un interval mai mare (1 minut de exemplu nu 1 secunda)
2) ai putea folosi alte tehnologii (gen comet push daca iti permite serverul)

Scris: Joi Apr 19, 2012 7:46 pm
de Double_Web
@quadmachine:
1. daca aplic codul tau, imi vine informatia in real-time?
2. scuza-ma, dar nu am inteles prea bine stats tbl.

Si,da, este vorba de un joc. Pe langa hp,max_hp, mai sunt urmatoarele valori:
-bani,glodzi(niste bani mai speciali), energie, max_energie, level, max_level, experienta, regat.
Daca ma intrebati: 'Dc. ma complic cu max_hp si max_energie???' raspunsul este, pentru ca jocul are ca scop de a face bani (reali). Valorile initiale max_viata / max_energie sunt 100. Daca jucatorul da un banut, pot sa-i modific max_viata cu 1000. in fine...

AAaa... intrebare: daca acest script este hostat la o firma de hosting (ex. Romarg <nu fac reclama>) care la pachetele de hosting au trafic nelimitat... nu are nimic scriptul, nu?

Scris: Joi Apr 19, 2012 8:58 pm
de Birkoff
daca e vb de un joc, recomandarea mea este urmatoarea

1) in interfata de joc, cu javascript, faci counter-ul si ce mai trebuie (virtual, doar ca sa vada userul cam ce se intampla)
2) in spate, in codul php, la fiecare cerere a unei actiuni faci calculele din php si actualizezi in bd starea resurselor si ce mai trebuie.

ideea e asa, jucatorul va vedea cum ii cresc resursele (din javascript) dar in spate nu se va modifica nimic pana cand el nu va da clik pe ceva
- in clipa cand da clik pe ceva tu rulezi un script si faci calculele, modifici valorile in bd si afisezi noile valori la jucator.

asa e mai sigur, nu depinzi de codul js (in caz ca cineva manareste codul js ca sa isi faca avantaje la joc nu va reusii pentru ca tot de php depind calculele nu de js)

ca sa explic altfel, el vede in pagina ca ii cresc resursele cu x procente pe secunda, dar in realitate in bd resursele sunt nemodificate, pana in momentul cand da clik pe ceva si atunci din php se fac toate calculele se actualizeaza toate resursele si se face actiunea ceruta (fara sa aiba treaba cu valorile din js)
daca ai depinde de js, oricine cu ceva cunostinte de js ar modifica codul js si ar obtine avantaje in joc (de ajuns sa modifice valoarea variabilei js care creste resursele si se trezeste cu full resurse, pe cand din php nu are acces si degeaba face manarii in js)

Double_Web scrie: AAaa... intrebare: daca acest script este hostat la o firma de hosting (ex. Romarg <nu fac reclama>) care la pachetele de hosting au trafic nelimitat... nu are nimic scriptul, nu?


depinde de host, in general ei monitorizeaza incarcarea resurselor si daca observa o crestere nejustificata a traficului sau a procesorului iti pot limita sau chiar bloca traficul sau incarcarea procesorului (si te trezesti ca se plange lumea ca are lag, sau ca merge jocu in reluare sau ca li se incarca pagina in 5 minute). la fel si numarul de interogari la bd, in general nu e bine sa depaseasca 10-15 interogari pe pagina (cu cat mai putine cu atat mai bine)

Scris: Joi Apr 19, 2012 9:38 pm
de Double_Web
mersi Birkoff!