php - 锁定其他脚本查询的表,直到我的 php 脚本结束

标签 php mysql

我有一个 php 脚本,它截断一个表并使用 .csv 文件中的数据重新构建它。该脚本有一个每 15 分钟运行一次的 cronjob。

我有另一个脚本,这个表的数据对它来说非常重要,这个脚本有点重(可能需要服务器 10-15 秒的计算。

有时会发生第一个脚本在处理第二个脚本时发生,并返回错误。我怎样才能在第一个脚本运行时“锁定”这个表? 谢谢

最佳答案

不要截断和重建。那是没有意义的。而是重建到一个新表中,然后将新表快速重命名为旧名称,然后丢弃现在的旧表:

CREATE TABLE _new LIKE old;
TRUNCATE _new;

LOAD DATA INFILE ... INTO _new ...;

RENAME TABLE old TO _old, _new TO old;
DROP TABLE _old;

您需要小心地测试它并确保它不会让您没有任何数据,但如果 TRUNCATE 方法未完成就退出,这里同样的风险也适用。

关于php - 锁定其他脚本查询的表,直到我的 php 脚本结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39684531/

相关文章:

php - 如何在 PHP 中通过 while 循环检索数据

php - 为什么 laravel 中 get() 函数的返回值在检查 is_array 时不是数组

php - 如何修复这个 SQL 语法错误?

mysql - Mysql中2个字符之间的不同路径

mysql - 错误 1005 (HY000) : Can't create table db. #sql-5471_137' (errno: 121)

php - 选择所有帖子的所有评论 php mysql

php - 如何从他的父用户标识中搜索一级用户记录

mysql - 不知道如何以正确的方式形成查询

java - 删除父 manyToOne 注释时删除孤儿

php - Magento 的 Cron 从根本上有缺陷吗?