gpt4 book ai didi

php - 打破大规模 MySQL 更新

转载 作者:行者123 更新时间:2023-11-29 06:03:59 26 4
gpt4 key购买 nike

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

<?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 中的类似错误)。

提前致谢。

最佳答案

您可能需要通过命令行和set_time_limit(0)来运行它。如果您使用的是 codeigniter,请通过用户指南查看如何运行命令行。 http://codeigniter.com/user_guide/general/cli.html

现在,在执行此操作之前,您提到您正在使用数组 block 。如果您要从数据库获取所有值,则无需使用array_chunk。例如,只需设置一个获取变量即可。/your/url?offset=1000,完成后,重定向到相同的内容,但使用 2000 等等,直到完成。

不是最好或最干净的,但可能会完成它。

关于php - 打破大规模 MySQL 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12415822/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com