PHP(或MySQL)锁

时间:2013-04-24 14:51:50

标签: php mysql synchronization locking

我有一个应用程序:

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

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

只需使用交易。

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

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