首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >破坏大规模的MySQL更新

破坏大规模的MySQL更新
EN

Stack Overflow用户
提问于 2012-09-13 22:42:17
回答 1查看 158关注 0票数 0

现在,在我的CodeIgniter模型中有这样的东西:

代码语言:javascript
复制
<?php 
$array = array(...over 29k IDs...);
$update = array();
foreach ($array as $line) {
   $update[] = array('id' => $line, 'spintax' => $this->SpinTax($string));
   ### $this->SpinTax parses the spintax from a string I have. It has to be generated for each row.
}
$this->db->update_batch('table', $update, 'id');
?>

最初的20k记录被更新得很好,但是在它完成之前我得到了一个504 Gateway Time-out

我尝试过将nginx服务器超时增加到一些可笑的东西(比如10分钟),但我仍然会遇到错误。

我能做些什么使这个而不是超时。我已经阅读了许多答案和如何分割更新,但我继续得到服务器超时。PHP或CodeIgniter解决方案将是很好的,我需要将此代码部署到可能不使用nginx的多个服务器上(Apache中类似的错误)。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-13 22:59:28

您可能需要通过命令行和set_time_limit(0)来运行它。如果您在代码点火器中,请查看如何通过用户指南运行命令行。guide/general/cli.html

现在,在您这样做之前,您已经提到您正在使用数组块。如果要从数据库中获取所有值,则不需要使用array_chunk。例如,只需设置一个get变量即可。/your/url?偏移量=1000,当它完成时,重定向到同一件事情,但使用2000等,直到它完成。

不是最好的,也不是最干净的,但很可能会完成。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12415822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档