简体   繁体   English

PHP mysql数据库未更新为并行

[英]PHP mysql database is not updated as parallel

Hello friends, 你好朋友,

I have a mysql db and a php page . 我有一个mysql db和一个php页面。 When I or someone call my php page it is updating my table smoothly. 当我或某人致电我的php页面时,它正在顺利更新我的表格。

But when it is called by more then one user at same moment, it is not updating the table correctly . 但是,当多个用户同时调用它时,它并不能正确更新表。 It is updating only one user's process . 它仅更新一个用户的进程。 I m using standart mysql connection. 我正在使用标准的mysql连接。 I have tried ADO DB connection but problem was not solved . 我尝试了ADO DB连接,但是问题没有解决。 What is the problem ? 问题是什么 ?

This is my php page; 这是我的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);

?>

what is your table type (Innodb / MyISAM). 您的表类型是什么(Innodb / MyISAM)。 In Innodb there is row level locking of records.so one user at a time but not as with MyISAM, in it table level locking. 在Innodb中,记录具有行级锁定。因此,一个用户一次(但与MyISAM不同)处于表级锁定。 so try to make your table Innodb type. 因此,请尝试使表成为Innodb类型。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM