PHP(或者MySQL)锁

PHP(或者MySQL)锁,php,mysql,synchronization,locking,Php,Mysql,Synchronization,Locking,我有一份申请: 在服务器上调用PHP脚本 PHP脚本发出一个MySQL请求,如果行中的某个特定值设置为false,该请求将返回MySQL表中的一行 PHP脚本修改行并将值设置为true 然而,我设想在多处理器服务器中,脚本可以在两个内核上并发执行;因此,两个脚本都试图访问表中的同一行,这可能会出现问题,即使理想情况下它只对其中一个脚本可用 我想我的问题是,有没有办法在特定的行上创建一个锁,这样一次只能由一个PHP脚本实例访问它?谢谢大家! MySQL的默认行为可能足以解决您的问题: 只需使用

我有一份申请:

  • 在服务器上调用PHP脚本
  • PHP脚本发出一个MySQL请求,如果行中的某个特定值设置为false,该请求将返回MySQL表中的一行
  • PHP脚本修改行并将值设置为true
然而,我设想在多处理器服务器中,脚本可以在两个内核上并发执行;因此,两个脚本都试图访问表中的同一行,这可能会出现问题,即使理想情况下它只对其中一个脚本可用


我想我的问题是,有没有办法在特定的行上创建一个锁,这样一次只能由一个PHP脚本实例访问它?谢谢大家!

MySQL的默认行为可能足以解决您的问题:
只需使用事务即可

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

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

我很难用文字表达多少非问题并发读取操作。现在,即使是并发写入也几乎不在“担心”的范围之内(至少在mySQL的上下文中),除非您同时处理数千个操作。接受我的建议,不要为此而失眠[或编写任何代码]。