0

我有一个应用程序:

  • 在服务器上调用 PHP 脚本。
  • 如果行中的特定值设置为 false,PHP 脚本会发出 MySQL 请求,返回 MySQL 表中的一行。
  • PHP 脚本修改该行并将值设置为 true。

但是,我想象在多处理器服务器中,脚本可能会在两个内核上同时执行;因此,两个脚本尝试访问表中的同一行可能会出现问题,即使理想情况下它应该仅可用于其中一个脚本。

我想我的问题是,有什么方法可以在特定行上创建一个锁,以便一次只能由 PHP 脚本的一个实例访问?谢谢!

4

2 回答 2

0

MySQL 的默认行为可能足以解决您的问题: http ://dev.mysql.com/doc/refman/5.0/en/internal-locking.html

于 2013-04-24T14:59:22.647 回答
0

只需使用事务。

BEGIN WORK;
...sql statements...
COMMIT;

如果您使用的是 MyISAM,则可以使用LOCK TABLES,但它效率低下,因为它锁定了整个表,而不仅仅是一组行。

于 2013-04-24T15:45:58.533 回答