Gar*_*hby 5 php mysql concurrency
当人们试图访问MySQL数据库并且他们正在尝试使用相同的信息更新表时,我遇到了一些问题.
我有一个使用PHP编写的网页.在此网页中是一个查询,以检查是否已将某些数据输入数据库.如果数据没有,那么我继续插入它.麻烦的是,如果两个人同时尝试,检查可能会说数据还没有输入,但是当插入发生时,它已经由另一个人进行.
处理这种情况的最佳方法是什么?我可以锁定数据库以仅处理我的查询然后再处理我的问题吗?
您正在寻找LOCK。
http://dev.mysql.com/doc/refman/5.0/en/lock-tables.html
mysql_query这可以作为简单的(或)运行MySQLi::query/prepare。
我想说最好锁定需要锁定的特定表(尽管您可以尝试LOCK TABLES *)而不是锁定整个数据库 - 因为将无法读取任何内容。我想你正在寻找类似的东西:
LOCK TABLES items;
START TRANSACTION;
INSERT INTO items (name, label) VALUES ('foo', 'bar');
UNLOCK TABLES;
Run Code Online (Sandbox Code Playgroud)
或者在 PHP 中:
mysql_query('LOCK TABLES items');
mysql_query("INSERT INTO items (name, label) VALUES ('foo', 'bar')");
mysql_query('UNLOCK TABLES');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7446 次 |
| 最近记录: |