1

データベースをループで更新したい。データは、ロードした xml ファイルからの価格と在庫情報です。更新したい項目は約8000あります。かなり時間がかかり、アイテム 3000 付近でサーバーがエラー 500 を返します。

私はそれを行うためのより良い、よりケーキのような方法がないかどうか疑問に思っています.

4

2 に答える 2

1

このようなタスクには、シェルまたはある種のイベント ディスパッチ システムを使用する必要があります。そして、変更したいデータをまとめて一度に読み取ります。あなたがそれを行う方法は、メモリがいっぱいになり、エラーが発生するだけです。

そして、適切な 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 に答える