现在,在我的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中类似的错误)。
提前谢谢。
发布于 2012-09-13 22:59:28
您可能需要通过命令行和set_time_limit(0)来运行它。如果您在代码点火器中,请查看如何通过用户指南运行命令行。guide/general/cli.html
现在,在您这样做之前,您已经提到您正在使用数组块。如果要从数据库中获取所有值,则不需要使用array_chunk。例如,只需设置一个get变量即可。/your/url?偏移量=1000,当它完成时,重定向到同一件事情,但使用2000等,直到它完成。
不是最好的,也不是最干净的,但很可能会完成。
https://stackoverflow.com/questions/12415822
复制相似问题