2014-06-10 7 views
0

Symfony2와 Doctrine을 사용하여 작은 엔티티를 만드는 데 문제가 있습니다. 작동하지만 속도가 느리고 메모리가 많이 소모됩니다.Symfony2/Doctrine submiting form은 매우 오랜 시간이 걸립니다.

우리는이 문제가 심포니의 $form->submit()에 있다고 생각합니다.

이 소요 ~ 0.1 초 :

die('x'); 
$form->submit($request); 

이 걸리는 60 ~ 초 : 우리는이 제출 방법 안에 ") (사망"하는 것을 시도했다

$form->submit($request); 
die('x'); 

, 아래 return $this; 모든 방법 실행 시간은 약 0.1 초입니다. 뭔가 다른 일이 발생하고있는 것 같아 문제를 찾을 수 없습니다.

XDebug를 실행하면 다음과 같이 표시됩니다. Symfony \ Component \ Form \ Form-> submit은 가장 포괄적 인 비용을 가지며 주로이 호출은 Symfony \ Component \ Form \ Form-> viewToNorm입니다.

우리는 시도 다음

  • 설정 realpath_cache_size = 4096K
  • 설정 realpath_cache_ttl = 7200
  • 장애인 XDebug가 APC

디바이스 또는 자극 환경의 차이를 사용

  • .

  • +0

    당신은 당신이 무한 루프에 "하락"하지 않을 확실합니까? 이 코드 스 니펫과 함께,'die ('x'); $ form-> submit ($ request);'$ form-> submit ($ request); 그걸 알기를 바랍니다. – DonCallisto

    +0

    답장을 보내 주셔서 감사합니다. 엔티티가 데이터베이스에서 생성되고 ID가 반환되기 때문에 무한 루프라고 생각하지 않습니다. die()와 관련해서 우리는 문제가 submit 메소드에 의존하고 있음을 설명하려했습니다. – Nixxxon

    +0

    Windows 서버를 사용하고 있습니까? 필자는 웹 서버가 존재하지 않는 파일 시스템에 액세스하려고하는 이와 같은 수수께끼 문제를 겪었습니다. 내장 PHP 웹 서버로 테스트 해보십시오. 그건 그렇고, 스톱워치 구성 요소는 타이밍 물건에 편리합니다. http://symfony.com/doc/current/components/stopwatch.html. 로깅도 효과적입니다. – Cerad

    답변

    1

    우리는 폼 빌더에 query_builder를 추가하여 문제를 해결했지만 이제는 모든 것이 다시 잘 동작합니다.

    ->add('authentication', 'entity', array(
        'class' => 'Model\Authentication', 
        'required' => false, 
        'multiple' => false, 
        'property' => 'id', 
        'invalid_message' => _('No authentication entity found')  
    )) 
    

    에 :에서

    ->add('authentication', 'entity', array(
        'class' => 'Model\Authentication', 
        'required' => false, 
        'multiple' => false, 
        'property' => 'id', 
        'invalid_message' => _('No authentication entity found'), 
        'query_builder' => function (EntityRepository $er) { 
          return $er 
           ->createQueryBuilder('au') 
           ->select('au') 
          ; 
         }  
    )) 
    
    관련 문제