假设有a.php,内容是用ajax每1毫秒请求c.php;c.php是更新test表,并且有事务保护:
a.php
<script>
function prod_price()
{
$.post("c.php",{},function(msg){
$('#msg').append("<p>"+msg.info+"</p>")
},"json")
}
setInterval("prod_price()",1);
</script>
<div id=msg></div>c.php
mysql_query('START TRANSACTION') or exit("{data:'',status:2,info:'事务错误1'}");
mysql_query("update test set name='1111111'");
if(mysql_errno ())
{
mysql_query('rollback');
mysql_query('END');
exit("{data:'',status:2,info:'事务错误2'}");
}
else
{
mysql_query('commit');
mysql_query('END');
exit("{data:'',status:1,info:'ok'}");
}
为了测试并发引起的事务错误,我又复制a.php 到b.php;内容完全一样;然后我用ie开了a。php;firefox开了b.php,运行都正常,返回都是ok;这就奇怪了,每个1毫秒运行一次,2个进程共享一个资源test表,都是更新,咋就不报错呢?????
a.php
<script>
function prod_price()
{
$.post("c.php",{},function(msg){
$('#msg').append("<p>"+msg.info+"</p>")
},"json")
}
setInterval("prod_price()",1);
</script>
<div id=msg></div>c.php
mysql_query('START TRANSACTION') or exit("{data:'',status:2,info:'事务错误1'}");
mysql_query("update test set name='1111111'");
if(mysql_errno ())
{
mysql_query('rollback');
mysql_query('END');
exit("{data:'',status:2,info:'事务错误2'}");
}
else
{
mysql_query('commit');
mysql_query('END');
exit("{data:'',status:1,info:'ok'}");
}
为了测试并发引起的事务错误,我又复制a.php 到b.php;内容完全一样;然后我用ie开了a。php;firefox开了b.php,运行都正常,返回都是ok;这就奇怪了,每个1毫秒运行一次,2个进程共享一个资源test表,都是更新,咋就不报错呢?????
第二:可以住数据库中插不同数据,或递增数据
改为:mysql_query("insert into test (name) values ('".time().mt_rand()."')");还是不报错,数据库正常入库。
几秒钟的时间,test表里面记录新增了1700多条,但就是没有报事务错误,奇怪。
修改为:
mysql_query('START TRANSACTION') or exit("{data:'',status:2,info:'事务错误1'}");mysql_query("insert into test (name) values ('".time().mt_rand()."')");
mysql_query("insert into test (name) values ('".(555+time().mt_rand())."')");
mysql_query("insert into test (name) values ('".(666+time().mt_rand())."')");
if(mysql_errno ())
{
mysql_query('rollback');
mysql_query('END');
exit("{data:'',status:2,info:'事务错误2'}");
}
else
{
mysql_query('commit');
mysql_query('END');
exit("{data:'',status:1,info:'ok'}");
}
没有用
我的mysql版本是5.0.45-community-nt
让我think think.
mysql 不是不行,而是太厉害了,超过oracle,mssql,别人都能提示错误,
mysql 已经到了不提示的境界,全部交给他处理,平滑过渡,是不是这么回事?歇个菜,给分了,我准备换数据库了!