在php中检测'具有读锁定的刷新表'

时间:2010-03-30 10:52:39

标签: php mysql locking

我想从我的应用程序知道myisam表是否可以接受写入(即未锁定)。如果抛出异常,一切都很好,因为我可以捕获它并将失败的语句记录到文件中。但是,如果发出了“具有读锁定的刷新表”命令(可能用于备份),则我发送的查询将永远挂起。

如果一次锁定一个表,插入延迟效果很好。但是当应用此全局锁定时,我的查询只是等待。

我运行的查询是一个insert语句。如果此语句失败或挂起,则用户体验会降低。我需要一种方法将查询发送到服务器并忘记它(非常)。

有没有人对如何处理此事有任何建议?

- 设置查询超时?
-run asyncronous request并允许锁定在应用程序继续时到期? - 请求我的php进程?

如果我能提供,澄清或详细信息,请告诉我。

1 个答案:

答案 0 :(得分:1)

SHOW OPEN TABLES LIKE "table_name";

给你的结果如下:

database, table, in_use, name_locked
test, my_table, 1, 0

'in_use'列将告诉您其他人是否在该表上有读/写锁。