CakePHP:循环中的数据库更新 - 错误500的服务器响应

时间:2012-04-23 09:53:52

标签: php mysql cakephp

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

我想知道是否有一种更好的,更“蛋糕化”的方法来做到这一点。

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分: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);