1

我想循环更新我的数据库。数据是我加载的 xml 文件中的价格和库存信息。我要更新大约 8000 个项目。服务器响应错误 500 需要相当长的时间,大约在第 3000 项。

我想知道是否没有更好,更Cake'ish的方式来做到这一点。

4

2 回答 2

1

对于这样的任务,应该使用shell或某种事件调度系统。并一次读取要更改的数据块。你这样做的方式只会导致填满内存并出现错误。

如果你想在适当的 CakePHP 中做点什么,请停止编写臃肿的控制器,更关键的是:停止使用 query()。我建议你先学习和理解 MVC 和一些软件设计原则。

也停止使用可怕的变量名称,如“artPriceArr3”或“art”。是艺术品吗?一篇文章?一个艺术家?阅读本文:清洁代码

于 2012-04-23T11:33:57.027 回答
0

这是我的控制器代码——更简洁:

$this->Stock->query('TRUNCATE stocks;');

$itemsFromXml   = $this->XmlPricelist->getXml();

$fields = array('id','amount','price'); 
$values     = array();

foreach($itemsFromXml as $key=>$item){
 $values[] = array($item['id'],$item['stock'],$item['price']); 
} 
$this->multiSave($this->Stock,$values,$fields);
于 2012-04-24T14:02:44.277 回答