Witam,
Dostałem na projekt za zadanie napisać grę online multiplayer, i wybrałem taka gierkę: link
Samo działanie gry sobie rozkminiłem (choć jeszcze nie jest skończona) ale mam problem z jej odświeżaniem/ przeładowaniem planszy po kliknięciu, a mianowicie plansza jest ładowana z drugiej strony php po (odświeżeniu po paru sekundach) bądź kliknięciu w bok kwadratu Ajaxem. I wszystko fajnie działa tylko jest taki problem ze po 4-5 kliknięciu kolejnego boku kwadratu ta druga strona php nie odpowiada. Zapytanie trwa ok 20s po czym stronka się wiesza.

Działa to tak ze na drugiej stronie php sa zdarzenia onclick które po zwróceniu odpowiedzi drugiej strony do pierwszej wykonują znowu odświeżenie / przeładowanie planszy funkcja Ajaxa na pierwszej stronie.
Zauważyłem ze właśnie po 4-5 kliknięciu jakoś strona się wiesza, trzeba ja odświeżyć i znowu działa do 5 kliknięć.

Ruchy graczy są zapisywane i zczytywane do bazy MySQL

po uruchomieniu stronki pierwszej raz automatycznie pobiera plansze z drugiej strony
PIERWSZA STRONA:
  1. echo "<body onload=\"gecior('".$_GET['gr']."')\">
  2. <div id='tutaj'>strona gra</div>
  3. </body>";
  4.  
  5. ?>
  6. <script language='javascript'>
  7. var version
  8.  
  9. function initXMLHttpRequest(){
  10. var objHTTP = null
  11. if (window.XMLHttpRequest) { //IE7 and FF
  12. try{
  13. objHTTP = new XMLHttpRequest()
  14. }catch(e){}
  15. }else if(window.ActiveXObject){ //IE6 and below
  16. if(version){
  17. objHTTP = new ActiveXObject(version)
  18. }else{
  19. var xmlhttp = new Array('Msxml2.XMLHTTP.7.0','Msxml2.XMLHTTP.6.0','Msxml2.XMLHTTP.5.0','Msxml2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP','Microsoft.XMLHTTP')
  20. for(var i = 0; i < xmlhttp.length; i++){
  21. try{
  22. objHTTP = new ActiveXObject(xmlhttp[i]);
  23. if(objHTTP != null){
  24. version = xmlhttp[i]
  25. break
  26. }
  27. }catch(e){}
  28. }
  29. }
  30. }
  31. return objHTTP
  32. }
  33. function alertContents(oXmlHttp) {
  34. if (oXmlHttp.readyState == 4) {
  35. if (oXmlHttp.status == 200) {
  36. document.getElementById('tutaj').innerHTML=oXmlHttp.responseText
  37. } else {
  38. alert('a')
  39. }
  40. }
  41. }
  42. function plansza(klik){
  43. oXmlHttp=initXMLHttpRequest()
  44. oXmlHttp.onreadystatechange = function() { alertContents(oXmlHttp) }
  45. //oXmlHttp.onabort = function() {alert("oXmlHttp.onabort")};
  46. //oXmlHttp.onerror = function() {alert("oXmlHttp.onerror")};
  47. //oXmlHttp.onload = function() { alert("oXmlHttp.onload")};
  48. //oXmlHttp.onloadstart = function() {alert("oXmlHttp.onloadstart")};
  49. //oXmlHttp.onprogress = function() {alert("oXmlHttp.onprogress")};
  50. tym=klik //encodeURIComponent
  51. oXmlHttp.open("POST",'do.php',false)
  52. oXmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
  53. oXmlHttp.send(tym)
  54. alertContents(oXmlHttp)
  55. }
  56. var gecik;
  57. function gecior(zm){
  58. gecik = zm
  59. //t=setTimeout("plansza('gracz=" + gecik + "')",5000)
  60. plansza("gracz=" + gecik)
  61. }
  62. </script>


DRUGA STRONKA:
  1. include('gra.php');
  2.  
  3. $player1 = "jeden";
  4. $player2 = "dwa";
  5.  
  6. $plansza_kolumny = 7;
  7. $plansza_wiersze = 5;
  8.  
  9.  
  10. //if ($_POST['x'] != ""){
  11. $nadpis = mysql_query("select count(*) from ruchy where x=".$_POST['x']." and y=".$_POST['y']." and z=".$_POST['z']);
  12.  
  13. $nadpisek = mysql_fetch_array($nadpis);
  14.  
  15. if ($nadpisek[0] == 0){
  16. mysql_query("insert into ruchy(x,y,z,nazwa) values(".$_POST['x'].",".$_POST['y'].",".$_POST['z'].",'".$_POST['gracz']."')");
  17. /* tutaj jeszcze nie skonczone
  18. //sprawdzanie czy kwadrat zostal zamkniety
  19. if ($_POST['z'] == 0){ //mozliwosc zamkniecia kwadratu w pionie
  20. if ($_POST['y'] == 0){
  21. $boczek = '1';
  22. $boczek = spr_bok($_POST['x'], 0, 1);
  23. $boczek = spr_bok($_POST['x'], 1, 0);
  24. $boczek = spr_bok($_POST['x']+1, 0, 1);
  25. if ($boczek == '1'){
  26. echo "kwadrat zamkniety";
  27. }else{
  28. echo "kwadrat: ".$boczek;
  29. }
  30. }
  31.  
  32.  
  33. }else if ($_POST['z'] == 1){ //mozliwosc zamkniecia kwadratu w poziomie
  34.  
  35. }*/
  36.  
  37. }else{
  38. echo "juz jest ten ruch";
  39. }
  40. //}
  41.  
  42. //tworzenie pustej tabeli na ruchy
  43. for ($i=0; $i <= $plansza_wiersze; $i++){
  44. for ($j=0; $j <= $plansza_kolumny; $j++){
  45. $poz[$i][$j][0] = 0;
  46. $poz[$i][$j][1] = 0;
  47. $poz[$i][$j][2] = 0;
  48. }
  49. }
  50. //zczytywanie ruchow z bazy do tabeli
  51. $zap = mysql_query("select * from ruchy");
  52. for ($a=0 ; $a<get_rows(ruchy); $a++){
  53. $odp = mysql_fetch_array($zap);
  54. $poz[$odp[1]][$odp[0]][$odp[2]] = $odp[3];
  55. }
  56. //wypisywanie planszy
  57. echo "<table cellspacing='0'>";
  58. for ($i = 0; $i<$plansza_wiersze; $i++ ){
  59. //rzad poziomy
  60. echo "<tr>";
  61. for ($j = 0; $j<$plansza_kolumny; $j++ ){
  62. echo "<td><img src='gfx/black_dot.png'></td>";
  63. if ($poz[$i][$j][0] != '0'){
  64. if($poz[$i][$j][0] == $player1){
  65. echo "<td><img src='gfx/red_h.png'></td>";
  66. }else if($poz[$i][$j][0] == $player2){
  67. echo "<td><img src='gfx/green_h.png'></td>";
  68. }
  69. }else{
  70. echo "<td onmouseout='this.style.backgroundColor=\"#FFFFFF\"'
  71. onmousemove='this.style.backgroundColor=\"#AAAAAA\"'
  72. onmouseover='this.style.backgroundColor=\"#AAAAAA\"'
  73. onclick=\"plansza('gracz=".$_POST['gracz']."&x=".$j."&y=".$i."&z=0')\">
  74. <img src='gfx/blue_h.png'></td>";
  75. }
  76. }
  77. echo "<td><img src='gfx/black_dot.png'></td> </tr>";
  78. //rzad pionowy
  79. echo "<tr>";
  80. for ($j = 0; $j<$plansza_kolumny; $j++ ){
  81. //pionowe boki
  82. if ($poz[$i][$j][1] != '0'){
  83. if ($poz[$i][$j][1] == $player1){
  84. echo "<td><img src='gfx/red_v.png'></td>";
  85. }else if($poz[$i][$j][1] == $player2){
  86. echo "<td><img src='gfx/green_v.png'></td>";
  87. }
  88. }else{
  89. echo "<td onmouseout='this.style.backgroundColor=\"#FFFFFF\"'
  90. onmousemove='this.style.backgroundColor=\"#AAAAAA\"'
  91. onmouseover='this.style.backgroundColor=\"#AAAAAA\"'
  92. onclick=\"plansza('gracz=".$_POST['gracz']."&x=".$j."&y=".$i."&z=1')\">
  93. <img src='gfx/blue_v.png'></td>";
  94. }
  95. //kwadraty
  96. if ($poz[$i][$j][2] != '0'){
  97. if ($poz[$i][$j][2] == $player1){
  98. echo "<td><img src='gfx/red_dot.png'></td>";
  99. }else if($poz[$i][$j][2] == $player2){
  100. echo "<td><img src='gfx/blue_dot.png'></td>";
  101. }
  102. }else{
  103. echo "<td><img src='gfx/green_dot.png'></td>";
  104. }
  105. }
  106. //ostatni pionowy bok
  107. if ($poz[$i][$j][1] != '0'){
  108. if ($poz[$i][$j][1] == $player1){
  109. echo "<td><img src='gfx/red_v.png'></td>";
  110. }else if ($poz[$i][$j][1] == $player2){
  111. echo "<td><img src='gfx/green_v.png'></td>";
  112. }
  113. }else{
  114. echo "<td onmouseout='this.style.backgroundColor=\"#FFFFFF\"'
  115. onmousemove='this.style.backgroundColor=\"#AAAAAA\"'
  116. onmouseover='this.style.backgroundColor=\"#AAAAAA\"'
  117. onclick=\"plansza('gracz=".$_POST['gracz']."&x=".$j."&y=".$i."&z=1')\">
  118. <img src='gfx/blue_v.png'></td>";
  119. }
  120. echo "</tr>";
  121. }
  122. //ostatni poziomy bok
  123. echo "<tr>";
  124. for ($i = 0; $i<$plansza_kolumny; $i++ ){
  125. echo "<td><img src='gfx/black_dot.png'></td>";
  126. if ($poz[$plansza_wiersze][$i][0] != '0'){
  127. if ($poz[$plansza_wiersze][$i][0] == $player1){
  128. echo "<td><img src='gfx/red_h.png'></td>";
  129. }else if ($poz[$plansza_wiersze][$i][0] == $player2){
  130. echo "<td><img src='gfx/green_h.png'></td>";
  131. }
  132. }else{
  133. echo "<td onmouseout='this.style.backgroundColor=\"#FFFFFF\"'
  134. onmousemove='this.style.backgroundColor=\"#AAAAAA\"'
  135. onmouseover='this.style.backgroundColor=\"#AAAAAA\"'
  136. onclick=\"plansza('gracz=".$_POST['gracz']."&x=".$i."&y=".$plansza_wiersze."&z=0')\">
  137. <img src='gfx/blue_h.png'></td>";
  138. }
  139. }
  140. echo "<td><img src='gfx/black_dot.png'></td> </tr>";
  141. echo "</table>";
  142. //koniec wypisywania
  143. ?>


Wiem ze trochę zagmatwane ale mam nadzieje ze ktoś pomoże
pozdro