2015-11-25 4 views
0

Привет друзья,PHP база данных mysql не обновляется как параллельная

У меня есть mysql db и php-страница. Когда я или кто-то звоню на мою php-страницу, он плавно обновляет мой стол.

Но когда он вызывается более чем одним пользователем в тот же момент, он не обновляет таблицу правильно. Он обновляет только один пользовательский процесс. Я использую стандартное соединение mysql. Я пробовал соединение ADO DB, но проблема не была решена. В чем проблема ?

Это моя страница php;

<?php 


     $host ="******.com"; 
     $uname = "*****"; 
     $pwd = "*******"; 
     $db = "*****_db"; 


    $con = mysql_connect($host,$uname,$pwd) or die("connection failed"); 
    mysql_select_db($db,$con) or die("db selection failed"); 

     $id = $_REQUEST['id']; 
     $int_id = intval($id); 
     $value = 0; 

      if (isset($_REQUEST['vote1'])) 
      { 
       $vote1 = $_REQUEST['vote1']; 
       $value = 1; 
       $vote = intval($vote1); 
      } 

      if (isset($_REQUEST['vote2'])) 
      { 

       $vote2 = $_REQUEST['vote2']; 
       $vote = intval($vote2); 
       $value = 2; 

      } 

      //Get Detail 



mysql_query("SET NAMES 'utf8'"); 
mysql_query ("SET CHARACTER SET utf8"); 
mysql_query ("SET COLLATION_CONNECTION = 'utf8_general_ci'"); 


// get all products from products table 
$res_detail = mysql_query("SELECT *FROM v_list WHERE id='$int_id'") or die(mysql_error()); 


if (mysql_num_rows($res_detail) > 0) { 

while ($row = mysql_fetch_assoc($res_detail)) { 

    if($value ==1) 
    { 
     $fark = $vote1 - $row["vs1_vote"]; 

     if($fark == 1) 
     { 
     $sum_vote = $vote1 + $row["vs2_vote"] ; 

     $v1_percent = round(($vote1 *100/$sum_vote), 2); 

     $v2_percent = 100 - $v1_percent; 

     } 
      else 
     { 
      echo "An error occoured"; 

      } 

     }//value1 

    if($value ==2) 
    { 
     $fark = $vote2 - $row["vs2_vote"]; 

     if($fark == 1) 
     { 
     $sum_vote = $row["vs1_vote"] + $vote2 ; 

     $v2_percent = round(($vote2 *100/$sum_vote),2); 
     $v1_percent = 100 - $v2_percent; 


     } 
      else 
     { 
      echo "An error occoured"; 

      } 
    }//value2 



}//while 

}//if 

$date = date('Y-m-d H:i:s'); 


    $flag['code']=0; 

    if($value ==1) 
    { 

     if($r=mysql_query("UPDATE v_list SET vs1_vote='$vote',vs1_percent='$v1_percent',vs2_percent='$v2_percent',allvotes='$sum_vote' WHERE id='$int_id'",$con)) 
     { 
     $flag['code']=1; 
     echo"hi"; 
     } 

    } 

    if($value ==2) 
    { 

     if($r=mysql_query("UPDATE v_list SET vs2_vote='$vote',vs1_percent='$v1_percent',vs2_percent='$v2_percent',allvotes='$sum_vote' WHERE id='$int_id'",$con)) 
     { 
     $flag['code']=1; 
     echo"hi"; 
     } 

    } 


    print(json_encode($flag)); 


    mysql_close($con); 

?> 
+0

Какие типы таблиц вы поете в db? 'myIsam' или' innodb'? – RamRaider

+0

Я пробовал как innodb, так и myIssam. Это не влияет – user3820266

ответ

0

какой у вас тип стола (Innodb/MyISAM). В Innodb существует блокировка записей на уровне строк. Один пользователь одновременно, но не как с MyISAM, в нем блокировка уровня таблицы. поэтому попробуйте сделать свой тип Innodb для таблицы.

+0

Я пробовал как innodb, так и myIssam. Это не затрагивает – user3820266

Смежные вопросы