2012-05-07 23 views
0

假設用戶是擴展Doctrine_Record的模型,考慮創建5000條用戶記錄的下面的(任意)代碼。教條1.2性能,創建大量記錄(〜5000)

$conn->beginTransaction(); 

for ($i = 1, $i < 5001, $i++) { 

    $user = new User(); 
    $user->some_field = $i; 
    $user->save(); 
    $user->free(true); 
} 

$conn->commit(); 

我發現這個腳本超時30秒後沒有管理創建所有用戶。有沒有方法來優化此代碼以更快速地工作?我正在考慮只是編寫普通的舊SQL來創建記錄,但後來我失去了Doctrine_Record的力量,包括插入鉤子等等(請注意,即使用戶模型中沒有掛鉤,該腳本也會超時)。

有什麼建議嗎?

回答

4

你應該嘗試Doctrine_Collection類,它允許批量插入:

$collection = new Doctrine_Collection('tablename'); 
$collection->add($record1); 
$collection->add($record2); 
$collection->add($record3); 
$collection->add($record4); 
$collection->save(); 
+0

謝謝,將會給這個試試吧! –

+0

您的評論讓我獲得了另一張確實有所幫助的門票:http://stackoverflow.com/questions/5415725/doctrine-insert-multiple-rows-with-just-one-save –