0

现在我的 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');
?>

504 Gateway Time-out前 20k 条记录更新得很好,但在它完成之前我得到了一个。

我尝试将 nginx 服务器超时增加到一些荒谬的值(比如 10 分钟),但我仍然收到错误消息。

我该怎么做才能使它超时。我已经阅读了许多答案和如何对更新进行分段,但我继续收到服务器超时。一个PHP或 CodeIgniter 解决方案会非常好,我需要将此代码部署到可能未使用的多个服务器nginx(Apache 中的类似错误)。

提前致谢。

4

1 回答 1

3

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

现在,在你这样做之前,你提到你正在使用数组块。如果您从数据库中获取所有值,则无需使用array_chunk. 例如,只需设置一个 get 变量。/your/url?offset=1000,完成后,重定向到同一件事,但使用 2000,依此类推,直到完成。

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

于 2012-09-13T22:59:28.703 回答