2012-05-07 2 views
0

사용자은 Doctrine_Record를 확장하는 모델이므로 5000 개의 사용자 레코드를 생성하는 아래 (임의의) 코드를 고려하십시오.doctrine 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의 힘을 잃어 버린다. 삽입 후크 등을 포함한다. (User 모델에 아무런 후크가 없다고하더라도이 스크립트가 타임 아웃된다는 것에주의하라.)

어떤 조언이 필요합니까?

답변

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 –