为了账号安全,请及时绑定邮箱和手机立即绑定

如何在引发超时 504 的 php 循环中更新多行

如何在引发超时 504 的 php 循环中更新多行

PHP
慕的地6264312 2022-07-22 09:39:04
我正在尝试将客户迁移到新的数据库结构。我编写了一个 PHP 脚本,它遍历每条记录并确定该客户在数据库中是否有重复项。如果出现多次,我会更新链接到该客户的所有其他表,并将其链接的 customerID 更新为该客户的最新版本。我面临的问题是,通过在浏览器中加载 migrate.php 来运行此脚本需要很长时间,以至于在运行它时会出现超时 504,即使我运行以“A”开头的客户名称的查询。然后更改为“B”并运行脚本,然后更改为“C”并运行脚本等...(无论如何都需要永远完成)。所以我的问题是:如何在 migrate.php 页面的 PHP 循环中运行大约 120,000 个 UPDATE 查询并避免 504 超时(当前设置为 5 分钟的限制),或者通过打印查询并通过 PHPMyAdmin 运行它们?我已经打印出来(片段):BEGIN;UPDATE renewal_reminder SET renewalid='49884' WHERE renewalid='43239';UPDATE renewal_note SET renewalid='49884' WHERE renewalid='43239';UPDATE renewal_request SET renewalid='49884' WHERE renewalid='43239';UPDATE renewal_timeline SET renewalid='49884' WHERE renewalid='43239';COMMIT;但这仍然会杀死 PHPMyAdmin 并返回错误。可以在 PHPMyAdmin 中使用这个大的更新列表来运行脚本,也许是分批?
查看完整描述

1 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

更新

出色地...

我最终在引用它的每个表中为 customerID 建立了索引,并使用 UPDATE 查询运行了我的原始脚本,它在大约 5 秒内完成了......

无需插入,然后复制数据。

因此,对于遇到相同问题的任何人,请尝试索引表中的某些列,以便您的脚本可以快速引用它们。


查看完整回答
反对 回复 2022-07-22
  • 1 回答
  • 0 关注
  • 76 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信